Git – 使用filter-branch删除空变更集的提交
如何使用git filter-branch删除没有变更集的提交?
我重写了我的git历史使用:
git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
这工作得很好,但现在我有很多提交与空的变更。 我想删除这些提交。 最好在msysgit。
重新激活并不是一个真正的select,因为我有超过4000个提交,其中一半必须删除。
只需添加--prune-empty
选项:
git filter-branch --tree-filter 'rm -rf my_folder' --prune-empty -f HEAD
(当然,如果你有其他的参考资料,你可能想用-- --all
而不是只是HEAD
来重写所有的东西。)
请注意,这与--commit-filter
不兼容; 在这种情况下, Charles Bailey有你的答案 。
只要看一下filter-branch
的文档,你应该可以做到这一点:
git filter-branch --commit-filter 'git_commit_non_empty_tree "$@"' HEAD