Mercurial:获得分支的精确副本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mercurial:获得分支的精确副本相关的知识,希望对你有一定的参考价值。

我有一个项目,我有自己的分支,有2个开发分支(让我们称之为“新的”和“旧的”。我与“新的”合并,然后错误地我与“旧的”合并)现在我的分支一团糟。

有没有办法让我的分支看起来像“新的”而不创建新的分支?我不关心失去我的变化,它只有几行,我可以再做一次。

答案

而不是消灭一切,为什么不彻底消灭一个坏合并?

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/StripExtensionthis answerMercurial — revert back to old version and continue from there

以上是关于Mercurial:获得分支的精确副本的主要内容,如果未能解决你的问题,请参考以下文章

Mercurial:我如何找出我的工作副本和另一个副本之间的区别

Mercurial 分支与编译标志:一个代码库——多个产品

mercurial 将一个分支设置为新的默认分支

使用Mercurial SCM进行分支

如何从 Mercurial 克隆中删除工作副本?

如何在 Mercurial 中重复合并分支