うっかりして、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 の作者です。