【问题标题】:How to merge after backout Mercurial退出 Mercurial 后如何合并
【发布时间】:2016-07-14 09:04:21
【问题描述】:

我确实提交了合并,之后我在主分支中退出以恢复上次合并。 一段时间后我需要合并分支,但 mercurial 说 abort: 与工作目录祖先合并没有效果

但在开发分支中,我看不到其他分支的更改。

【问题讨论】:

    标签: version-control mercurial


    【解决方案1】:

    Merge 只会选取自上次合并后的新内容。例如:

    default:   *------------?
                \          /
    develop:     o--o--o--o
    

    每个o 代表一些提交。我们从默认分支(名为default)开始,只有一次提交,这里标记为* 而不是o。然后我们从同一个第一次提交开始创建了一个develop 分支,并做了一些工作。

    工作准备就绪后,我们回到default 分支并使用hg merge。这建议进行新的提交,?。它是通过回顾 *defaultdevelop 之间的共同提交)并查看我们在两个分支上所做的并将它们组合来实现的。

    我们在default 上什么也没做,所以合并很容易。 Mercurial 能够将我们在develop 上所做的一切都放入default。现在让我们将合并填写为真正的提交:

    default:   o------------*
                \          /
    develop:     o--o--o--o
    

    请注意,我已移动 *。现在是新的合并。这是链接两个分支的最新提交。

    与此同时,hg backout 进行了一个新的提交,该提交撤消了之前的提交。具体来说,您要求退出合并。让我们画出来:

    default:   o------------*--u
                \          /
    develop:     o--o--o--o
    

    就无论如何所做的更改而言,这个新的提交有点像反物质版本的合并。 default 中的所有内容都回到了合并之前的状态。所以我使用字母 u(表示“撤消”)而不是通常的圆形 o 点来进行更典型的提交。

    但是,两个分支上最新的共同提交在哪里?答案应该很明显:仍然是*

    现在您要求 Mercurial 再次合并。它会在 develop 中找到自合并以来的更改——并且没有任何。没有新作品可以合并!

    假设我们再次检查develop 并进行一些 提交:

    default:   o------------*--u
                \          /
    develop:     o--o--o--o------o--o
    

    现在我们可以再次将hg merge develop 转换为default,以从两个new 提交中获取更改。但是您撤消的更改以及提交u(回退提交)仍然未完成。我们只会从develop 上的new(自合并以来)提交中获取更改,并且我们保留在@987654351 上所做的更改(自合并以来) @,也就是u的undo变化:

    default:   o------------o--u------*
                \          /         /
    develop:     o--o--o--o------o--o
    

    如果您想恢复所有这些更改,您可以简单地退出回退。也就是说,在develop 上添加新提交之前或之后的任何时间,甚至在合并这些新提交之前或之后,您都可以撤消撤消操作。让我们将 u 倒置为“重做”,看看如果我们在下一次合并之前插入它会是什么样子:

    default:   o------------o--u--n-----*
                \          /           /
    develop:     o--o--o--o--------o--o
    

    换句话说,提交uhg backout)取消了合并中的更改。它不会也不能真正使合并不会发生。因此,要重新获得合并中的更改,您必须撤消撤消操作,这里是我们的n

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 2011-05-08
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      相关资源
      最近更新 更多