Git filter-branchを使用して、変更セットのないコミットを削除するにはどうすればよいですか?
以下を使用してgit履歴を書き直しました。
git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
これはうまくいきましたが、今では空のチェンジセットを使用した多くのコミットがあります。これらのコミットを削除したいと思います。できればmsysgitで。
4000を超えるコミットがあり、その半分を削除する必要があるため、リベースは実際にはオプションではありません。
--Prune-empty
オプションを追加するだけです:
git filter-branch --tree-filter 'rm -rf my_folder' --Prune-empty -f HEAD
(もちろん、他の参照がある場合は、HEAD
だけでなく-- --all
ですべてを書き換えたい場合があります。)
これは--commit-filter
と互換性がないことに注意してください。その場合、 Charles Baileyが答えを持っています 。
filter-branch
のドキュメントを見るだけで、次のことができるはずです。
git filter-branch --commit-filter 'git_commit_non_empty_tree "$@"' HEAD