「Gitリポジトリが重い」はもう卒業!Web制作・AI開発の巨大ファイルを爆速管理するGit LFS

「Gitリポジリが重い」はもう卒業!Web制作・AI開発の巨大ファイルを爆速管理するGit LFS
皆さん、こんにちは!Web制作とAI開発の最前線でコードと格闘しているエンジニアの皆さん、日々の開発、お疲れ様です。突然ですが、こんな経験はありませんか?
- Gitリポジトリをクローンするのに、なぜか数十分もかかる...
- ちょっとした画像アセットを追加しただけなのに、プッシュがめちゃくちゃ遅い...
- AIの学習済みモデルやデータセットをGitで管理しようとしたら、リポジトリがギガバイト単位に膨れ上がってしまった...
もし一つでも心当たりがあるなら、今日の記事はあなたの悩みを解決するかもしれません。そう、今回ご紹介するのは、「Git Large File Storage」(通称:Git LFS)です!
Git LFSで何ができるのか?もうGitリポジトリを肥大化させない!
Git LFSは、その名の通り「Gitで大きなファイルを扱うための拡張機能」です。Gitはテキストファイルのバージョン管理には非常に優れていますが、画像、動画、音声、PSDファイル、データセット、学習済みモデルといった巨大なバイナリファイルの管理は苦手としています。
なぜ苦手かというと、Gitはファイルの変更履歴を効率的に管理するために、差分(diff)を保存する仕組みを使っています。しかし、バイナリファイルは少し変更するだけでファイル全体が大きく変わるため、差分が大きくなり、リポジトリ全体が肥大化しやすいのです。これが、リポジトリのクローンやプッシュが遅くなる原因となります。
Git LFSを導入すると、以下のことが可能になります。
- リポジトリの軽量化と高速化: 巨大なバイナリファイルをGitリポジトリに直接保存せず、そのファイルの「ポインタ」(非常に小さなテキストファイル)だけをGitで管理します。実際の巨大ファイルは別のLFSサーバーに保存されるため、Gitリポジトリ本体は常に軽量に保たれます。
- 巨大ファイルの効率的なバージョン管理: Gitの強力なバージョン管理機能を、画像や動画、データセットといった巨大ファイルにも適用できます。過去のバージョンの巨大ファイルを簡単にチェックアウトしたり、変更履歴を追ったりすることが可能です。
- チーム開発の効率向上: リポジトリが軽量になることで、チームメンバーがリポジトリをクローンしたり、ブランチを切り替えたりする際の時間が大幅に短縮され、開発効率が向上します。
Web制作・AI開発でGit LFSはどう使える?具体的な活用シーン
それでは、私たちの専門分野であるWeb制作とAI開発において、Git LFSがどのように役立つのか、具体的な活用シーンを見ていきましょう。
Web制作の現場で
- デザインアセットの管理: デザイナーから共有されるPSDファイル、Sketchファイル、Figmaのローカルバックアップファイルなど、容量の大きいデザインファイルをGit LFSで管理することで、開発リポジトリを肥大化させずに、バージョン管理の恩恵を受けられます。
- 画像・動画アセットの最適化: Webサイトで使う高解像度の画像(WebP, JPG, PNG)や、背景動画ファイルなど、最終的にはCDNで配信されるようなアセットも、開発段階ではGit LFSで管理し、リポジトリをクリーンに保つことができます。
- 静的サイトジェネレーターのメディア管理: Next.jsやGatsbyなどの静的サイトで多くの画像や動画を扱う場合、Git LFSは非常に有効です。
AI開発の現場で
- データセットのバージョン管理: AI開発では、学習データセットが数GBから数TBになることも珍しくありません。Git LFSを使えば、データセットのバージョン管理が可能になり、実験の再現性向上に貢献します。ただし、あまりにも巨大なデータセットの場合は、別途データレイクやDVC (Data Version Control) の検討も視野に入れると良いでしょう。
- 学習済みモデルの管理: PyTorchの
.ptファイルやTensorFlowの.h5ファイル、Hugging Faceのモデルファイルなど、学習済みモデルも数十MBから数GBになることがあります。Git LFSで管理することで、モデルの進化を追跡しやすくなります。 - 実験結果やログファイルの保存: 大量の実験結果やログファイルをGitリポジトリにコミットする際にも、Git LFSが活躍します。
Git LFSは、このようにGitの得意分野ではない巨大ファイルを、まるでテキストファイルのようにスムーズに扱えるようにしてくれる魔法のツールなのです。
試すならどこから始める?Git LFSの導入ステップ
「これ、使えそう!」そう思ったら、早速試してみましょう。導入はとても簡単です。
1. Git LFSのインストール
まずは、お使いの環境にGit LFSをインストールします。
- macOS (Homebrew):
brew install git-lfs - Debian/Ubuntu:
sudo apt install git-lfs - Fedora/CentOS:
sudo dnf install git-lfs(またはsudo yum install git-lfs)
その他のOSや詳細なインストール方法は、Git LFSの公式サイトをご確認ください。
2. Git LFSの初期設定
インストール後、GitにLFSをフックさせるための初期設定を行います。これは一度だけ実行すればOKです。
git lfs install
3. 管理したいファイルタイプを指定(トラック)
次に、Git LFSで管理したいファイルの拡張子やパスを指定します。例えば、すべてのPSDファイルをLFSで管理したい場合は、プロジェクトのルートディレクトリで以下のコマンドを実行します。
git lfs track \"*.psd\"
このコマンドを実行すると、.gitattributesファイルが生成(または更新)されます。このファイルは、どのファイルタイプをGit LFSで扱うかをGitに指示するものです。忘れずにコミットしましょう。
git add .gitattributesgit commit -m \"Add Git LFS tracking for PSD files\"
複数のファイルタイプをトラックしたい場合は、繰り返しgit lfs trackを実行するか、.gitattributesファイルを直接編集することも可能です。
例: git lfs track \"*.mp4\"
例: git lfs track \"data/*.csv\"
4. ファイルをコミット&プッシュ
あとは通常通りファイルをコミットし、プッシュするだけです。Git LFSでトラックされているファイルは、自動的にLFSサーバーにアップロードされます。
git add my_large_image.psdgit commit -m \"Add large PSD image\"git push origin main
注意点: GitHubやGitLabなどのリモートリポジトリサービスは、Git LFSの利用に容量や帯域幅の制限を設けている場合があります。大規模なプロジェクトで大量のLFSファイルを使う場合は、プランのアップグレードや、自己ホスト型のLFSサーバーの検討も必要になるかもしれません。
まとめ
Git LFSは、Web制作やAI開発において、巨大なファイルを扱う際のGitリポジトリの肥大化問題をスマートに解決してくれる強力なツールです。導入も非常に簡単で、一度設定してしまえば、あとは普段通りGitを使うだけでOK。
「もう重いリポジトリに悩まされたくない!」そう願うなら、ぜひ今日からGit LFSをあなたの開発ワークフローに取り入れてみてください。きっと、その快適さに驚くはずです!


