通过喜剧错误的喜剧,我发现自己处于以下情况的本地回购中:
使用git reset
我已将分支标记操纵到我想要的位置,现在我想删除看似未命名分支的3个提交。我已经研究/尝试过各种各样的事情,包括gc
,prune
但没有成功。
我意识到我可以吹掉当地的回购并重新克隆它,但是我想把它作为一个学习机会。
所以问题是:如何删除这些提交?
答案 0 :(得分:6)
jleedev's answer肯定会让他们离开,但我真的不认为你应该这样做。
一旦提交不再在reflog中,下一个gc(由几个关键命令自动运行)将自动清除提交,这将在90天后到期。也就是说,它们最终会消失; git只是让你不要删除任何你可能不想要的东西。
如果您只是想在gitk
看到它们,您只需重新加载视图(或重新启动gitk)即可。既然这些提交不在分支上,它们将不会显示。是的,他们仍然会在您的存储库中,但除非您的磁盘空间不足,否则不会对您造成伤害。这只是一个安全网。
答案 1 :(得分:1)
你看过reflog
了吗?它跟踪HEAD在您的存储库中移动的每一种方式(并且它通过阻止自动删除您的提交来完成它的工作)。
使用git reflog
或git log -g
进行检查。使用git reflog expire --expire=now --all
对其进行核对,然后您可以垃圾收集未使用的提交。