Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial HG:从历史中撤消提交_Mercurial_Tortoisehg - Fatal编程技术网

Mercurial HG:从历史中撤消提交

Mercurial HG:从历史中撤消提交,mercurial,tortoisehg,Mercurial,Tortoisehg,我有一个版本为1、2、3、4、5和6的HG存储库 当我提交rev 4时,我无意中弄糟了rev 3中一些我不应该做的更改。我没有注意到这一点,直到rev 6已经提交 我需要撤销rev 4中的更改,但随后重新应用所有其他更改。基本上是撤销提交#4。我该怎么做?你想要什么 还原/撤消早期版本的效果 回退通过应用与要回退的变更集相反的变更集来工作。新的变更集已提交给,并最终合并 您可以使用MQ扩展: hg qinit hg qimport -r 4:tip hg qpop -a hg qdelete 4

我有一个版本为1、2、3、4、5和6的HG存储库

当我提交rev 4时,我无意中弄糟了rev 3中一些我不应该做的更改。我没有注意到这一点,直到rev 6已经提交

我需要撤销rev 4中的更改,但随后重新应用所有其他更改。基本上是撤销提交#4。我该怎么做?

你想要什么

还原/撤消早期版本的效果

回退通过应用与要回退的变更集相反的变更集来工作。新的变更集已提交给,并最终合并


您可以使用MQ扩展:

hg qinit
hg qimport -r 4:tip
hg qpop -a
hg qdelete 4.diff
hg qpush -a
hg qfinish -a
以上就是你如何改写历史,我相信这就是你想要的


您也可以使用
hg backout
,但这会撤消工作目录中的提交,您可以提交该文件。

一旦我使用backout,如何重新应用由于回滚而分别被反转的变更集5和6?这是我感到困惑的部分。有什么提示吗?回退会在5,6之后创建一个新的变更集,实际上是4的倒数。您不需要重新应用第5版和第6版
hg backout-r4
将撤销第4版中所做的更改,而不涉及第5版和第6版中所做的更改。帮助系统提供了一个很好的概述()。回退成功了。下面是我使用的命令:hg backout--merge-r4--parent3如果您在答案中添加更多信息,而不仅仅是一个链接,可能会非常好。例如,您可以添加@TimHenigan注释。如果且仅当我知道上次从我的存储库与任何其他人共享变更集是变更集3或更早版本时,我才会这样做。否则,当您在变更集4、5和6中引入相同变更的新版本时,您会有一个令人讨厌的小合并头痛。重写历史永远是最后的手段,尤其是当你分享历史时。