我在一个项目中有自己的分支,其中有2个开发分支(让我们称之为“新的”和“旧的”。我与“新的”合并,然后错误地我合并了“旧的“现在我的分支一团糟。
在没有创建新分支的情况下,有没有办法让我的分支看起来像“新的分支”?我不关心失去我的变化,只有几行,我可以再做一次。
答案 0 :(得分:1)
而不是消灭所有内容,为什么不彻底消灭一个糟糕的合并?
Mercurial允许您删除修订版,前提是您还删除了作为该修订版后代的所有提交。这是一个扩展,但它与所有现代版本的Mercurial捆绑在一起(自2.8起),因此您只需将strip =
添加到配置的[extensions]
部分即可启用它。
合并(然后提交合并)会创建修订。你说(我认为)你首先运行hg merge <correct thing>
并提交,然后运行hg merge <incorrect thing>
并提交。
在这种情况下,最新版本是您要删除的错误版本。这将删除从合并中下降的任何修订,但如果你做的最后一件事是hg merge <incorrect thing> && hg commit
,那么无论如何都没有这样的修改。
因此,找出错误的修订版号 - 运行hg log
以查看最后几个修订版,然后运行hg strip -r <wrongrev>
。这将删除该修订版(及其所有后代)。
另请参阅https://www.mercurial-scm.org/wiki/StripExtension和this answer至Mercurial — revert back to old version and continue from there。