如何在mercurial中为我的最后一次提交(尚未推送)取消提交

时间:2012-03-08 11:43:28

标签: mercurial

我有这样的情况:

  

我已经提交了文件a,b,c,d。现在我发现错误地我提交了   文件a和b;所以在推动这些变化之前,我想不要承诺   文件a和b,这样我只能推c和d。有人告诉我如何   通过使用mercurial命令来做到这一点。

这里uncommit意味着我想要使用“hg out -p”之后  查看更改集并手动执行操作。

3 个答案:

答案 0 :(得分:40)

假设您在提交文件后还没有在您的存储库上执行任何其他事务,我认为您可以将其作为一个两阶段过程执行此操作:

hg rollback
hg commit filec filed

hg rollback应删除您刚刚提交的提交,但将文件保留为已更改。然后hg commit filec filed应提交名为filec&的文件。 filed。显然,您应该使用实际文件的名称替换这些文件名。

可能值得一提的是,您应该对hg rollback小心 - 它会改变历史记录,因此如果使用不当,可能会丢失数据。

答案 1 :(得分:4)

hg rollback,您可以在Chapter 9. Finding and fixing mistakes

Mercurial: The Definitive Guide中找到更多内容

答案 2 :(得分:3)

在mercurial中,您可以使用backout命令,该命令会创建一个与您要撤消的变更集相反的变更集。然后提交此变更集。在此之后你唯一需要做的就是合并。

您可以退出任何变更集,但不建议您退出合并变更集。

可以找到带有示例的命令的详细说明here