スキップしてメイン コンテンツに移動

投稿

7月, 2019の投稿を表示しています

gitレポジトリをスリム化する

最近得た知見 つい最近、手違いにより肥大化してしまった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なので、勇気が必要ですが、バックアップがあれば何度でも戦えます。 まとめ という事で、無駄にでかいレポジトリを作らないように、普段から気をつけましょう(´・ω・`)