【发布时间】:2011-03-16 11:49:52
【问题描述】:
如何使用 git filter-branch 删除没有变更集的提交?
我使用以下方法重写了我的 git 历史记录:
git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
这很好,但现在我有很多带有空变更集的提交。我想删除这些提交。最好在msysgit中。
变基并不是一个真正的选择,因为我有超过 4000 次提交,其中一半必须被删除。
【问题讨论】:
-
对于未来的访问者,
--index-filter和git rm -r --ignore-unmatch --cached my_folder比--tree-filter快得多,因为它不必检查每个修订版。它完全在索引上运行。 -
如果你已经完成了这项工作 (
--tree-filter ...),现在只想摆脱挥之不去的空提交,这节省了我的培根:git filter-branch --prune-empty(只是filter-branch命令 没有任何“过滤器”)——在stackoverflow.com/questions/28313664/…中找到——当Jefromi的下面的回答(stackoverflow.com/questions/5324799/…)产生错误报告Found nothing to rewrite时,这很有用。
标签: git git-filter-branch