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

skg*_*skg 28 mercurial

我有这样的情况:

我已经提交了文件a,b,c,d.现在我发现错误地我提交了文件a和b; 所以在推送这些更改之前,我想要取消提交文件a和b,以便我只能推送c和d.有人可以通过使用mercurial命令告诉我如何做到这一点.

在这里,uncommit意味着我想要使用"hg out -p",然后查看更改集并手动执行操作.

obm*_*arg 42

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

hg rollback
hg commit filec filed
Run Code Online (Sandbox Code Playgroud)

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

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

  • 不推荐使用rollback并将其标记为危险."取消提交"上次提交的一种简单方法是使用hg strip -r -1 -k. (9认同)
  • 因为人们给了我-1的评论.以下是备份我的声明的文档:https://www.mercurial-scm.org/repo/hg/help/rollback (5认同)
  • 如果链接断开,@ phb提到的文档说明:_ [hg rollback](https://www.mercurial-scm.org/repo/hg/help/rollback)回滚最后一笔交易(危险)(已弃用) )请使用'hg commit --amend'而不是回滚来纠正上次提交中的错误.重要的是,`hg commit --amend`是推荐的选择! (2认同)