Mercurial:避免跳过祖先修订的方法

时间:2015-05-28 07:48:12

标签: mercurial

我遇到与what does 'skipping ancestor revision' mean when using 'graft'?

类似的问题

但是这个SO主题不提供解决方案,只提供解释。

更多细节:昨天一位同事提交了一个错误并推动它。其他同事和我在此之后添加了提交。为了快速修复此错误,我使用hg backout来取消此提交号11511。 但我不想放弃这个提交,所以我创建了一个新的分支(来自撤销提交),我试图嫁接11511提交,但Mercurial说:

跳过祖先修订

我希望获得11511提交更改的分支以修复错误。有什么办法解决这个问题?

2 个答案:

答案 0 :(得分:5)

Mercurial感到困惑,因为你试图嫁接历史中已经存在的提交(并没有意识到退出还原它)。

有几种可能的解决方案。一,使用-f选项强制hg graft继续进行:

hg graft -f -r 11511

或者,您可以在您创建的分支上再次撤销已撤消的提交。

答案 1 :(得分:0)

好的,我稍微误解了你的问题。

下面一行下方的部分是如何在需要时重新应用错误的变更集。

这里的重要部分是你不会失去任何东西。备份变更集不会从历史记录中删除原始变更集,而是创建另一个与您要退出的变更集相反的变更集,实际上删除了原始变更集引入的变更。

因此,在您决定将某些不良变化带回来之前,您不必做任何事情。那时,当你想要回到糟糕的变化时,你可以做我在下面提到的。你做的是更新到原始坏变更集之前的变更集,然后将坏变更集移植到它上面,这将创建一个与你已经退出的原始坏变更集并行的新头。

这个新头稍后可以合并回头部。

解决此问题的另一种方法是简单地撤销退出变更集。