Git リポジトリのコミット履歴から大きなファイルを削除するにはどうすればよいですか? 質問する

Git リポジトリのコミット履歴から大きなファイルを削除するにはどうすればよいですか? 質問する

うっかりして、DVD-rip を Web サイト プロジェクトにドロップしてしまいgit commit -a -m ...、リポジトリが 2.2 GB も膨れ上がってしまいました。次に編集を行い、ビデオ ファイルを削除してすべてをコミットしましたが、圧縮ファイルはリポジトリの履歴にまだ残っていました。

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

ベストアンサー1

使用BFG レポクリーナーは、 のよりシンプルで高速な代替手段でありgit-filter-branch、Git 履歴から不要なファイルを削除するために特別に設計されています。

注意深く従ってください使用方法核心部分は次の通りです:

java -jar bfg.jar --strip-blobs-bigger-than 100M my-repo.git

100 MB を超えるファイル (最新のコミットに含まれていないもの) は、Git リポジトリの履歴から削除されます。その後、git gc次のコマンドを使用して不要なデータを消去できます。

git reflog expire --expire=now --all && git gc --prune=now --aggressive

プルーニング後、リモートリポジトリに強制的にプッシュできます*

git push --force

注意: GitHub で保護ブランチを強制プッシュすることはできません

BFGは通常少なくとも10-50を実行するよりも 倍速くgit-filter-branch、一般的に使いやすいです。

完全な開示: 私は BFG Repo-Cleaner の作者です。

おすすめ記事