最近得た知見
つい最近、手違いにより肥大化してしまったgit レポジトリをスリム化した。その知見をメモ代わりに羅列する。
便利なドキュメント
リポジトリのサイズを減らすatlassianのこのドキュメントが非常に分かりやすい。
要点をまとめると、
- バックアップを取る
- でかいサイズのファイルを削除する
- 履歴ごとすべて削除する
- 強制pushする
バックアップを取る
どこか適当なディレクトリに git cloneすれば良い。でかいサイズのファイルを削除する
以下のコマンドで、ファイルを削除するgit rm path/to/large_file.mpg
git commit -m 'Remove large file'
履歴ごとすべて削除する
以下のコマンドで、履歴を消すgit filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch path/to/large_file.mpg" --prune-empty -- --all
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now
これで、ほぼ消えるのだが、実はこれだけでは終わらない。そのレポジトリがbranchを複数持っている場合、上記の履歴を消すコマンドを、各branch毎に実行する必要がある。
強制pushする
git push -f --all
すべてが終わったら、pushする。force pushなので、勇気が必要ですが、バックアップがあれば何度でも戦えます。
コメント
コメントを投稿