【入門編】Bitbucketの「LFS (Large File Storage)」徹底解説:大容量ファイルを管理する最適解 – バージョン管理・CI/CD活用バイブル

こんにちは。現場の最前線でコードとインフラの狭間を走り続けているエンジニアです。

今日は、多くのチームが一度は直面する「Gitが重すぎて泣きたくなる問題」に終止符を打つ、Bitbucket LFS (Large File Storage) について深掘りしていきます。

「Gitに大容量ファイルを入れて、リポジトリが肥大化してクローンが終わらない……」
もし今そんな状況なら、この記事を読み終える頃には、あなたのワークフローは劇的に洗練されているはずです。

—

なぜGitに「巨大なファイル」を入れてはいけないのか?

Gitは本来、ソースコードのような「テキストファイル」の差分を管理するために設計されたツールです。画像、動画、コンパイル済みのバイナリ、データセットなどがリポジトリに入ると、Gitはそれら全ての履歴を保持しようとします。

結果として、`git clone` に数十分かかる、リポジトリサイズが数GBを超えてBitbucketのクォータ(上限)に抵触するといった地獄が待っています。

これを解決するのが Git LFS です。
LFSは、実データは別のストレージに置き、Gitリポジトリにはその「ポインタ(参照先のテキストファイル)」だけを保存することで、リポジトリの軽量化を実現します。

—

1. Git LFSの導入:最短ルート

まずは環境を整えましょう。各OSのパッケージマネージャでインストール可能です。

macOSの場合
brew install git-lfs

Ubuntu/Debianの場合
sudo apt-get install git-lfs

インストール後の初期化(これを忘れないでください)
git lfs install

これだけで、あなたのGit環境はLFSを使う準備が整いました。

—

2. 「HelloWorld」的な動作確認(追跡設定)

LFSを導入する最大のポイントは、「どのファイルをLFSで管理するか」を指定することです。

例えば、プロジェクトで `assets/` フォルダ内の `.psd` ファイルをLFSで管理したい場合、以下のコマンドを打ちます。

.psdファイルをLFSの追跡対象に追加
git lfs track “.psd”

.gitattributesという設定ファイルが生成されたことを確認
cat .gitattributes
出力結果: .psd filter=lfs diff=lfs merge=lfs -text

この `.gitattributes` ファイルは、「どのファイルをLFSとして扱うか」を定義する魔法の杖です。これ自体もGitで管理されるため、チームメンバー全員が同じルールで大容量ファイルを扱えるようになります。

あとは通常通りコミットするだけです。

git add .gitattributes
git add assets/logo.psd
git commit -m “feat: LFSで画像ファイルを管理”
git push origin main

これで、Bitbucket上ではポインタのみが管理され、実体はLFSストレージへと流れていきます。

—

3. 【現場の知見】既存リポジトリへの導入は慎重に

ここからがプロの領域です。既に巨大なファイルがコミット済みのリポジトリにLFSを導入する場合、単純な `git lfs track` だけでは過去の履歴に残った巨大ファイルは消えません。

履歴からファイルを削除し、LFSへ移行するには `git-lfs-migrate` を使うのが定石です。

履歴全体をスキャンして、過去の巨大ファイルをLFSに移行する
git lfs migrate import –include=”.psd” –everything

※注意:これはリポジトリの履歴を書き換えるため、チーム開発では全員に「一度クローンし直す」よう周知徹底してください。

—

4. 運用上の「やってはいけない」こと

LFSを使いこなすための、現場で痛い目を見ないための鉄則を伝授します。

1. `.gitattributes` を無視しない: このファイルをコミットし忘れると、他のメンバーの手元でLFSが正しく動作せず、巨大ファイルが直接Gitリポジトリに流れ込みます。
2. プッシュ漏れを確認: `git lfs push –all origin` で、ポインタだけでなく実データが正しくサーバに送られているか、不安な時はチェックしましょう。
3. ロック機構を活用する: 画像などのバイナリファイルはマージができません。Bitbucket/Git LFSには「ファイルロック機能」があります。

git lfs lock “assets/logo.psd”

これで「編集中」であることを明示し、意図しないコンフリクトを未然に防ぐことができます。

—

最後に:エンジニアとしてのステップアップ

LFSを導入することで、あなたのリポジトリは驚くほど軽快になり、CI/CDのパイプラインも高速化します。

「便利になったな」で終わらせず、「なぜこのファイルはGitで管理すべきか、それとも外に出すべきか」を常に意識してください。本当に巨大なアセットは、S3などのオブジェクトストレージに逃がし、GitにはそのURLを記したテキストだけを置く……という選択肢も、設計者としては常に持っておくべきです。

技術の本質を理解すれば、どんなツールもあなたの強力な武器になります。
さあ、快適な開発ライフを!

タイトルとURLをコピーしました