11

古いコミットに関するデータのローカル コピーを削除してリポジトリ サイズを縮小する方法はありますか?

git clone --depth 5最近のコミット データのみを使用して小さなローカル クローンを作成する方法と同様です。

リポジトリには、過去に何度も上書きされた数ギガバイトのゲーム アセットが含まれています。

編集:過去の履歴を消去したくありません。履歴をリモートと一貫したままにしたいのですが、古いコミットをローカルに保存して利用できるようにしたくありません。

4

2 に答える 2

8

残念ながら、履歴に最新のコミットのみを保持して、完全に使用可能なリポジトリを持つことはできません。浅いコピーはコミットできないため、完全には使用できません。

つまり、git がオブジェクト ストアにデータを保持する方法のため、履歴を最初から書き直す以外に多くのオプションはありません。

おそらく最も簡単な方法は、現在のすべてのゲーム アセット ファイルのコピーを git リポジトリの外部に作成し、ここで説明されgit filter-branchているように使用して、アセットが存在しなかったように履歴から削除することです。最後に、アセットを正しい場所にコピーして、もう一度コミットします。これにより、ゲーム アセットが最新のコミットでのみ表示されるように履歴が書き換えられます。

ただし、次のことを行うまで、ディスク容量は再利用されません。

git reflog expire --expire=now --all
git gc --prune=now
于 2013-05-31T10:45:48.373 に答える