如何删除错误的合并提交?

时间:2010-09-14 18:25:36

标签: git

通过喜剧错误的喜剧,我发现自己处于以下情况的本地回购中:

alt text

使用git reset我已将分支标记操纵到我想要的位置,现在我想删除看似未命名分支的3个提交。我已经研究/尝试过各种各样的事情,包括gcprune但没有成功。

我意识到我可以吹掉当地的回购并重新克隆它,但是我想把它作为一个学习机会。

所以问题是:如何删除这些提交?

2 个答案:

答案 0 :(得分:6)

jleedev's answer肯定会让他们离开,但我真的不认为你应该这样做。

一旦提交不再在reflog中,下一个gc(由几个关键命令自动运行)将自动清除提交,这将在90天后到期。也就是说,它们最终会消失; git只是让你不要删除任何你可能不想要的东西。

如果您只是想在gitk看到它们,您只需重新加载视图(或重新启动gitk)即可。既然这些提交不在分支上,它们将不会显示。是的,他们仍然会在您的存储库中,但除非您的磁盘空间不足,否则不会对您造成伤害。这只是一个安全网。

答案 1 :(得分:1)

你看过reflog了吗?它跟踪HEAD在您的存储库中移动的每一种方式(并且它通过阻止自动删除您的提交来完成它的工作)。

使用git refloggit log -g进行检查。使用git reflog expire --expire=now --all对其进行核对,然后您可以垃圾收集未使用的提交。