開発プロジェクトで画像・動画・音声ファイルなどの大容量ファイルを扱う際、通常のGitでは管理が困難になります。そんな問題を解決するのがGit LFS(Large File Storage)です。この記事では、Git LFS初心者でも安心して使えるよう、基本概念から実際の使用方法まで詳しく解説していきます。

Git LFSとは何か?
Git LFS(Large File Storage)は、Gitリポジトリで大容量ファイルを効率的に管理するための拡張機能です。通常のGitでは、すべてのファイルがリポジトリ内に保存されるため、大きなファイルがあるとリポジトリサイズが膨大になってしまいます。
Git LFSを使用すると、実際の大容量ファイルは外部ストレージに保存され、Gitリポジトリには「ポインター」と呼ばれる小さなテキストファイルのみが保存されます。
Git LFSが解決する問題
- リポジトリサイズの肥大化防止:大容量ファイルを外部保存することでリポジトリを軽量化
- クローン・フェッチの高速化:必要なファイルのみダウンロードして処理速度向上
- ストレージ容量の節約:不要な履歴ファイルの重複保存を回避

Git LFSの主な特徴とメリット
1. 大容量ファイルのバージョン管理
数GBクラスの大きなファイルでも、通常のGitと同様にバージョン管理が可能です。
2. 既存のGitワークフローを維持
特別なコマンドを覚える必要がなく、普段通りのgit add
、git commit
、git push
でファイル管理ができます。
3. アクセス権限の継承
Git LFSで管理されるファイルも、通常のGitファイルと同じアクセス権限が適用されます。
4. 高速なクローンとフェッチ
大容量ファイルが多いリポジトリでも、クローンやフェッチの処理時間を大幅に短縮できます。
Git LFSのインストール方法
Windows
- Git LFS公式サイトからインストーラーをダウンロード
- ダウンロードしたexeファイルを実行してインストール
macOS
# Homebrewを使用
brew install git-lfs
# または公式サイトからインストーラーをダウンロード
Linux (Ubuntu/Debian)
# パッケージマネージャーを使用
sudo apt update
sudo apt install git-lfs

Git LFSの基本的な使い方
1. Git LFSの初期化
リポジトリでGit LFSを使用する前に、まずユーザーアカウントでの初期化が必要です。
git lfs install
このコマンドは、ユーザーアカウントごとに一度だけ実行すれば十分です。
2. 追跡するファイルタイプの指定
Git LFSで管理したいファイルの種類を指定します。
# 例:Photoshopファイル(.psd)を追跡対象に設定
git lfs track "*.psd"
# 例:動画ファイルを追跡対象に設定
git lfs track "*.mp4"
git lfs track "*.mov"
# 例:音声ファイルを追跡対象に設定
git lfs track "*.wav"
git lfs track "*.mp3"
# 例:3Dモデルファイルを追跡対象に設定
git lfs track "*.fbx"
git lfs track "*.obj"
3. .gitattributesファイルの管理
Git LFSの設定は.gitattributes
ファイルに保存されます。このファイルもGitで管理する必要があります。
git add .gitattributes
git commit -m "Git LFS設定を追加"
4. ファイルの追加とコミット
通常のGitと同じ手順でファイルを追加・コミットします。
# 大容量ファイルを追加
git add large-video.mp4
# コミット
git commit -m "大容量動画ファイルを追加"
# リモートリポジトリにプッシュ
git push origin main

実践的な活用シーン
Webデザインプロジェクト
# デザイン関連ファイルをLFS管理
git lfs track "*.psd"
git lfs track "*.ai"
git lfs track "*.sketch"
git lfs track "*.fig"
動画制作プロジェクト
# 動画・音声ファイルをLFS管理
git lfs track "*.mp4"
git lfs track "*.mov"
git lfs track "*.avi"
git lfs track "*.wav"
git lfs track "*.aiff"
ゲーム開発プロジェクト
# ゲームアセットをLFS管理
git lfs track "*.fbx"
git lfs track "*.obj"
git lfs track "*.png"
git lfs track "*.jpg"
git lfs track "*.unity"
Git LFSの便利なコマンド一覧
現在の追跡設定を確認
git lfs track
LFS管理下のファイル一覧表示
git lfs ls-files
LFS管理下のファイルサイズ確認
git lfs ls-files --size
特定ファイルの追跡を解除
git lfs untrack "*.psd"
LFSファイルのプッシュ状況確認
git lfs status
既存プロジェクトへのGit LFS導入
既存のリポジトリに後からGit LFSを導入する場合は、git lfs migrate
コマンドが便利です。
# 既存の大容量ファイルをLFSに移行
git lfs migrate import --include="*.psd,*.mp4,*.mov" --everything
このコマンドにより、過去のコミット履歴も含めて指定したファイルタイプをLFS管理に移行できます。
注意点とベストプラクティス
1. ファイルサイズの目安
一般的に100MB以上のファイルはGit LFS管理を検討することをおすすめします。GitHubでは100MBを超えるファイルはプッシュできないため、特に重要です。
2. バイナリファイルの優先管理
テキストファイルと異なり、バイナリファイル(画像・動画・音声等)はGitの差分管理機能の恩恵を受けにくいため、積極的にLFS管理の対象とすることを推奨します。
3. チーム開発での共有
.gitattributes
ファイルをリポジトリに含めることで、チームメンバー全員が同じLFS設定を共有できます。
4. ストレージ容量の管理
Git LFSは外部ストレージを使用するため、利用しているサービス(GitHub、GitLab等)のストレージ容量制限を確認しておきましょう。
トラブルシューティング
Git LFSが認識されない場合
# Git LFSが正しくインストールされているか確認
git lfs version
# インストールされていない場合は再インストール
LFSファイルがダウンロードされない場合
# 手動でLFSファイルをダウンロード
git lfs pull
容量制限エラーが発生した場合
利用しているGitホスティングサービスのLFS容量制限を確認し、必要に応じてプランアップグレードを検討してください。
まとめ
Git LFSは大容量ファイルを含むプロジェクトには必須のツールです。特に以下のような分野で開発を行う場合は、積極的な導入を検討してください:
- Webデザイン・UI/UXデザイン
- 動画・音声コンテンツ制作
- ゲーム開発
- 機械学習・データサイエンス
- 3Dモデリング・CAD
初期設定は非常にシンプルで、一度設定すれば通常のGitワークフローと変わらずに使用できます。大容量ファイルの管理に悩んでいる開発者は、ぜひGit LFSを試してみてください。