Mercurial更新将覆盖我的更改而不是合并

Che*_*eng 6 mercurial

我来自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]
Run Code Online (Sandbox Code Playgroud)

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

替代文字


替代文字


现在,我执行拉动hello-world-feature,从中拉出变化hello-world-bugfix. 替代文字

然后,我执行更新,always merge打开选项. 替代文字

这是我的合并文件???

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]
Run Code Online (Sandbox Code Playgroud)

似乎我之前的承诺[FEATURE2 FEATURE2 FEATURE2]被覆盖了.

看来,我不应该进行更新步骤,这将不合并featurebug,但覆盖feature逃脱bug.拉后应该做的下一个正确步骤是什么?(通过TortoiseHg),以便我可以获得错误修复代码,并保留功能代码吗?

这是最终的存储库视图 hello-world-feature 替代文字

ang*_*son 7

"始终合并"选项并不像您认为的那样.

它只合并未提交的更改.

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

合并提交的更改,即.合并分支,需要进行显式合并.

因此,我将BUG2 BUG2 BUG2在日志中选择更改集,然后右键单击FEATURE2 FEATURE2 FEATURE2更改集并单击"合并",然后按照说明进行操作.

让我展开"Always merge"复选框的功能.

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

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

如果我只是使用未提交的更改进行更新,则在尝试更新时会出现此对话框:

确认更新

但是,如果我选中"始终合并(如果可能)"复选框,则只会假设我单击该对话框中的"合并"按钮而不提示我.

因此,"Always merge"在提交的文件上根本没有任何功能,它不会为您引入合并,它只会尝试将您的本地更改与更新一起移动.