肥大化したGitリポジトリにおいて歴史の粒度を落とさずにサイズを減らすには


gitを使ってウェブサービス運用を続けていたら年月を重ねたせいかGitリポジトリが肥大化して数ギガバイトを超えるほどに成長しました。
リポジトリの内訳としてはプログラム、画像等のリソース、テキストの設定ファイル等です。 尚、コミット数は数万以上あり、ブランチも多くあるとします。

この大きくなってしまったリポジトリを毎回Cloneするのはとても時間がかかるのでどうにかしたいと考えます。

条件としては

  * なるべく過去の歴史を捨てずに保持したい
  * 画像リソースは外部に移動してもよい

といった場合にどのようにアプローチを行えば素早く、軽いリポジトリにできるのでしょうか？




`git gc` を実行すると過去のコミットが圧縮され、容量を減らすことが出来ます。 `gc.auto` と `gc.autopacklimit`
を設定しておく事で定期的に実行しなくても自動で実行してくれる様になります。
過去に入れてしまったファイルは履歴として消せませんので、普段から「これは大きい」と思ったファイルは `git-media` 等を使って外部リソースに逃がし
sync する方針を取られるのが良いと思います。

