【问题标题】:Mercurial update will overwrite my changes instead of mergingMercurial 更新将覆盖我的更改而不是合并
【发布时间】:2010-12-09 07:41:52
【问题描述】:

我来自 CVS 背景。

目前,我有 2 个并行开发的 mercurial 存储库。 hello-world-bugfixhello-world-feature(这个是从 hello-world-bugfix 克隆的)

现在,我想将 hello-world-bugfix 中的错误修复代码合并到 hello-world-feature 中,这样一天结束时,我会得到一个合并文件。

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

[FEATURE2 FEATURE2 FEATURE2]

这是所有事物之前的样子,拉动和合并。以下两个文件已经提交。



现在,我从hello-world-feature 执行拉取,以从hello-world-bugfix 拉取更改。

然后,我执行更新,并打开always merge 选项。

这是我的合并文件???

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

看来我之前提交的[FEATURE2 FEATURE2 FEATURE2] 被覆盖了。

看来我不应该执行更新步骤,这不会将featurebug 合并,而是用bug 覆盖feature拉动后我应该做的下一个正确步骤是什么? (通过 TortoiseHg),这样我就可以获得错误修复代码,并保留功能代码?

这是hello-world-feature 的最终存储库视图

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    “始终合并”选项不会像您认为的那样做。

    它只合并未提交的更改。

    当您更新时,已提交的文件将替换为新版本。

    合并已提交的更改,即。合并分支,你需要做一个显式的合并。

    所以,我会在日志中选择BUG2 BUG2 BUG2 变更集,然后右键单击FEATURE2 FEATURE2 FEATURE2 变更集并单击合并,然后按照说明进行操作。

    让我详细介绍一下“始终合并”复选框的作用。

    假设我的存储库中有两个变更集,我更新到第一个,然后开始修改其中一个文件。

    在某些时候,我决定从另一个变更集开始会更好,所以我想更新它,保留我的修改。

    如果我只是进行更新,但未提交更改,我会在尝试更新时收到此对话框:

    但是,如果我选中“始终合并(如果可能)”复选框,它只会假定我单击了该对话框中的“合并”按钮而不提示我。

    因此“始终合并”对提交的文件根本没有任何功能,它不会为您引入合并,它只会尝试将您的本地更改与更新一起移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      相关资源
      最近更新 更多