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中恢复到以前的提交,而不留下悬念或创建新的分支/修订?_Mercurial - Fatal编程技术网

如何在Mercurial中恢复到以前的提交,而不留下悬念或创建新的分支/修订?

如何在Mercurial中恢复到以前的提交,而不留下悬念或创建新的分支/修订?,mercurial,Mercurial,好消息是我还没有推动任何改变。我有工作代码,然后将其提交为变更集3526。然后我做了一个hg拉和hg合并。在合并时,我搞砸了 我想回到变更集3526。tip当前位于变更集3640。但在进行此恢复时,我希望满足以下条件: 我希望它就像我从来没有做过hg拉和hg合并一样。 我不想要任何悬垂的头或新的树枝。 成功完成操作后,我希望hg日志只读取到变更集3526,就好像我从未执行过hg pull或hg merge一样。 我不想创建一个与3526相匹配的新版本-我想回到3526版本。 我应该使用什么操作来

好消息是我还没有推动任何改变。我有工作代码,然后将其提交为变更集3526。然后我做了一个hg拉和hg合并。在合并时,我搞砸了

我想回到变更集3526。tip当前位于变更集3640。但在进行此恢复时,我希望满足以下条件:

我希望它就像我从来没有做过hg拉和hg合并一样。 我不想要任何悬垂的头或新的树枝。 成功完成操作后,我希望hg日志只读取到变更集3526,就好像我从未执行过hg pull或hg merge一样。 我不想创建一个与3526相匹配的新版本-我想回到3526版本。 我应该使用什么操作来完成上述操作?我知道您可以使用hg update、hg revert和hg clone做类似的事情。但我不确定应该使用什么确切的命令,特别是在某些情况下,您最终会创建悬垂的头部或新的分支


我要找的确切命令是什么?

如果您真的想这样做,可以使用hg strip。您可能需要提供多个修订参数,具体取决于您在hg拉取过程中引入的变更集。显然-r 3527必须拆除;它是否删除所有后续修订取决于它们是否都是3527的后代。使用hglog-G可以帮助我们解决这个问题

不过,一般来说,没有必要退出拉操作。只有当您不再从该存储库中提取或进入该存储库并对其进行更改,以便将来从该存储库提取时不会获得这些变更集时,它才会为您带来一些好处。因此,如果您对现有合并不满意,您可以取消合并并重试。只要你知道你在用他们做什么,就没有必要担心一个分支中有多个负责人


您还应该知道,您的本地顺序修订号(如3526)是特定于您的存储库的。只要这是您正在处理/使用的一个存储库,这并不重要:如果您登录到另一个系统,该系统有一个存储库,您偶尔会通过pull或push与之共享,请记住这一点。

可能只是一个提示的重复-您可能不必担心在这种情况下是否使用了pull。这只是一个同步步骤。虽然您当然可以删除从拉操作中得到的更改,但最终您必须再次拉操作,然后它们会回来。如果变更集的顺序才是真正需要关注的问题,那么我建议阅读关于rebase的内容。