我遇到与what does 'skipping ancestor revision' mean when using 'graft'?
类似的问题但是这个SO主题不提供解决方案,只提供解释。
更多细节:昨天一位同事提交了一个错误并推动它。其他同事和我在此之后添加了提交。为了快速修复此错误,我使用hg backout来取消此提交号11511。 但我不想放弃这个提交,所以我创建了一个新的分支(来自撤销提交),我试图嫁接11511提交,但Mercurial说:
跳过祖先修订
我希望获得11511提交更改的分支以修复错误。有什么办法解决这个问题?
答案 0 :(得分:5)
Mercurial感到困惑,因为你试图嫁接历史中已经存在的提交(并没有意识到退出还原它)。
有几种可能的解决方案。一,使用-f
选项强制hg graft
继续进行:
hg graft -f -r 11511
或者,您可以在您创建的分支上再次撤销已撤消的提交。
答案 1 :(得分:0)
好的,我稍微误解了你的问题。
下面一行下方的部分是如何在需要时重新应用错误的变更集。
这里的重要部分是你不会失去任何东西。备份变更集不会从历史记录中删除原始变更集,而是创建另一个与您要退出的变更集相反的变更集,实际上删除了原始变更集引入的变更。
因此,在您决定将某些不良变化带回来之前,您不必做任何事情。那时,当你想要回到糟糕的变化时,你可以做我在下面提到的。你做的是更新到原始坏变更集之前的变更集,然后将坏变更集移植到它上面,这将创建一个与你已经退出的原始坏变更集并行的新头。
这个新头稍后可以合并回头部。
解决此问题的另一种方法是简单地撤销退出变更集。