如何使用 git filter-branch 删除没有变更集的提交?
我使用以下方法重写了我的 git 历史记录:
git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
这很好,但现在我有很多带有空变更集的提交。我想删除这些提交。最好在 msysgit 中。
变基并不是一个真正的选择,因为我有超过 4000 次提交,其中一半必须被删除。
如何使用 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
(当然,如果你有其他的 refs,你可能想要重写所有的东西,-- --all
而不仅仅是HEAD
.)
--commit-filter
请注意,这与;不兼容。在这种情况下,查尔斯贝利有你的答案。
只需查看 的文档filter-branch
,您应该能够做到这一点:
git filter-branch --commit-filter 'git_commit_non_empty_tree "$@"' HEAD