1. ホーム
  2. git

[解決済み] Git リポジトリのコミット履歴から大きなファイルを削除/消去する方法は?

2022-03-20 13:32:24

質問

ウェブサイトのプロジェクトにDVD-ripを誤ってドロップしてしまい、その後、不注意にも git commit -a -m ... そして、ザッと見て、レポが 2.2 ギガほど肥大化していました。次に編集を加え、ビデオファイルを削除し、すべてをコミットしましたが、圧縮ファイルはまだリポジトリに、履歴に残っています。

これらのコミットからブランチを開始し、あるブランチを別のブランチにリベースすることができることは知っています。しかし、2つのコミットをマージして、大きなファイルを履歴に残さないようにし、ガベージコレクションの手順でクリーンアップするためにはどうしたらいいでしょうか?

どのように解決するのですか?

このシンプルで強力なコマンドを使ってみてはいかがでしょうか?

git filter-branch --tree-filter 'rm -f DVD-rip' HEAD

--tree-filter オプションは、プロジェクトの各チェックアウト後に指定されたコマンドを実行し、その結果をレコメンドします。この場合、DVD-ripというファイルが存在するかどうかに関わらず、すべてのスナップショットから削除します。

巨大なファイルを導入したコミット(たとえば 35dsa2)がわかっている場合は、HEAD を 35dsa2..HEAD に置き換えることで、履歴をあまり書き換えないようにできます。したがって、まだプッシュしていない場合はコミットが分岐するのを避けることができます。この @alpha_989 さんのコメントは、ここで書き残すにはあまりに重要だと思われます。

参照 このリンク .