説明
Gitは、小さなテキストファイルとその変更を効率的に保存できるため、小さなテキストファイルの膨大な履歴に非常に適しています。同時に、gitはバイナリファイルが非常に苦手であり、ファイルの個別のコピーを素朴に保存します(デフォルトでは少なくとも)。ご覧のとおり、リポジトリは巨大になり、その後遅くなります。
これはDVCSに共通の問題であり、クローンを作成するたびにすべてのファイルのすべてのバージョン(「リポジトリ全体」)をダウンロードするという事実によって悪化します。で、みんな窯は、より多くの唯一のオンデマンド履歴バージョンをダウンロードSubversionの、のように、これらの大きなファイルを処理するためのプラグインに取り組んでいます。
解決
このコマンドは、サイズが5MB以上の現在のディレクトリにあるすべてのファイルを一覧表示します。
find . -size +5000000c 2>/dev/null -exec ls -l {} \;
リポジトリの履歴全体からファイルを削除したい場合は、このアイデアを使用しgit filter-branch
て履歴を調べ、大きなファイルの痕跡をすべて取り除くことができます。これを行った後、リポジトリのすべての新しいクローンはよりスリムになります。クローンを作成せずにリポジトリを学習したい場合は、manページに指示があります(「リポジトリを縮小するためのチェックリスト」を参照)。
git filter-branch --index-filter \
'find . -size +5000000c 2>/dev/null -exec git rm --cached --ignore-unmatch {} \;'
警告の言葉:ツリーとインデックスには異なるファイルがチェックインされているため、これによりリポジトリが他のクローンと互換性がなくなります。あなたはもうそれらから押したり引いたりすることができなくなります。
git-bigfiles
プロジェクト