代码之家  ›  专栏  ›  技术社区  ›  rlduffy

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

git
  •  1
  • rlduffy  · 技术社区  · 15 年前

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

    使用 git reset i have moveled the branch tags to where I want them,and I would now like to delete the 3 commits on what lookes like an unnamed branch.我已经研究/尝试了很多事情,包括 gc->, prune->code>without success.

    我意识到我可以将本地回购业务吹走并重新克隆,但我想将其用作学习机会。

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

    alt text

    使用 git reset 我已经将分支标记移动到我想要的位置,现在我想删除看起来像未命名分支的3个提交。我研究/尝试过很多事情,包括 gc , prune 没有成功。

    我意识到我可以把本地回购协议吹走,然后重新克隆,不过我想把它作为一个学习机会。

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Josh Lee ZZ Coder    15 年前

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

    用它检查 git reflog git log -g . 用它核弹 git reflog expire --expire=now --all ,然后可以垃圾收集未使用的提交。

        2
  •  6
  •   Community Mohan Dere    8 年前

    jleedev's answer 当然会让他们走的,但我真的不认为你应该这样做。

    一旦提交不再在reflog中,将由下一个GC(由多个键命令自动运行)自动清除提交,而reflog将在90天后过期。也就是说,它们最终会消失;Git只是阻止你删除任何你不想删除的内容。

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