Gitリポジトリの容量肥大化を解決する方法【実践テクニック集】
Gitリポジトリの容量が肥大化する原因とその解決方法を解説。履歴の見直し、大容量ファイルの削除、ツール活用など、実務で使える容量削減テクニックを紹介します。
Gitリポジトリの容量が増える原因とは?
Gitはバージョン管理のため、過去のすべての履歴を保存します。そのため、以下のような要因で容量が急激に膨らむことがあります:
- 不要な大容量ファイル(画像、動画、バイナリなど)の追加
による除外漏れ.gitignore
- 間違って大量のファイルをコミット
- 不要なブランチ・タグが大量に残っている
リポジトリ容量を確認する方法
1. リポジトリの合計サイズ確認(UNIX系)
du -sh .git
2. ファイルサイズの内訳を確認
git count-objects -vH
が特に大きい場合は過去の履歴が原因size-pack
3. 大きなファイルを調査(BFGやfilter-repo推奨)
git rev-list --objects --all | sort -k 2 > allfiles.txt git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20
解決方法①:大容量ファイルを過去の履歴から削除
方法1:BFG Repo-Cleanerを使う(高速・簡単)
java -jar bfg.jar --delete-files *.zip
または特定ファイル:
java -jar bfg.jar --delete-files secret.log
方法2:git filter-repoを使う(より柔軟)
git filter-repo --path bigfile.dat --invert-paths
※ 使用後は必ず以下を実行:
git reflog expire --expire=now --all git gc --prune=now --aggressive
解決方法②:.gitignore
を見直して再発防止
.gitignore
不要なファイルを追跡対象にしないために、以下を見直しましょう:
*.log *.zip node_modules/ .DS_Store
変更後はキャッシュからも削除:
git rm -r --cached . git add . git commit -m "Update .gitignore"
解決方法③:不要なブランチ・タグを整理
ローカルブランチの削除
git branch -d old-branch
リモートブランチの削除
git push origin --delete old-branch
未使用タグの削除
git tag -d v0.1.0 git push origin :refs/tags/v0.1.0
解決方法④:Git Large File Storage(Git LFS)の導入
頻繁に更新される大容量ファイルを扱う場合は、Git LFSの利用がおすすめです。
git lfs install git lfs track "*.psd" git add .gitattributes
その後、通常通り
git add
→ git commit
→ git push
で管理されます。
まとめ:Gitの容量管理は早めの対策がカギ
リポジトリの肥大化は放置しておくとclone/pull/pushなどの操作が遅くなり、チーム全体の生産性にも影響を与えます。問題が発生する前に
.gitignore
や LFS の導入を検討し、肥大化してしまった場合は BFG や filter-repo での履歴整理を行いましょう。
編集部