1

ソース コードとイメージ ファイルを含む、現在のプロジェクトの git リポジトリは、約 1.2 ギガバイトです。しかし、すべてのブランチの実際のファイルのサイズは約 205 メガバイトにすぎません。

私は git の初心者ですが、巨大なリポジトリ サイズは、リポジトリ内で画像ファイルを移動することが原因であると推測しています。git は移動されたファイルをキャッチしないため、履歴の古い場所に画像を保存し、新しい場所に画像を保存します。それがそのような大きなオーバーヘッドを引き起こす可能性があるかどうかはわかりません。

とにかく、ソース コード ファイルの履歴を失わずにリポジトリのサイズを縮小するにはどうすればよいでしょうか? 画像ファイルの履歴が失われても構いません。

4

1 に答える 1

2

Git は、移動またはコピーされたファイルの余分なコピーを保存しません。コンテンツが同じ場合、git が保存するのは新しいツリー構造だけです。

Git オブジェクト モデルの詳細: http://git-scm.com/book/en/Git-Internals-Git-Objects

git gcリポジトリで定期的なハウスキーピングを行う一般的な方法です。試してみて、リポジトリが縮小するかどうかを確認してください。

それでもうまくいかない場合 (git gc特に大量のバイナリ データを含むリポジトリでは、詰まることがあります)、 を使用してみてくださいgit repack。多くの場合、かなり時間がかかりますが、可能であれば、リポジトリを縮小する必要があります。これを試して:

git repack -adf --window=250 --depth=250 --window-memory=1024M

--window-memoryオプションに注意してください。マシンに十分なメモリがある場合は、このオプションを使用しなくても済むかもしれませんが、そうでない場合はgit repack、メモリ不足による失敗を防ぐ必要があります。私の経験では、使用可能なメモリの半分以下に設定すると、通常は問題なく動作します。

于 2013-03-18T13:32:43.573 に答える