gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:51:52 25 4
gpt4 key购买 nike

我来自 CVS 背景。

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

现在,我想 merge 来自 hello-world-bugfix 的错误修复代码进入 hello-world-feature ,所以在一天结束时,我会得到一个 merge 的文件。

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

[FEATURE2 FEATURE2 FEATURE2]

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

alt text

alt text

现在,我从 hello-world-feature 执行拉取操作, 从 hello-world-bugfix 中提取更改.
alt text

然后,我执行更新,使用 always merge选项打开。
alt text

这是我的 merge 文件???
[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

看来我以前犯过 [FEATURE2 FEATURE2 FEATURE2]被覆盖。

看来我不应该执行更新步骤,它不会 merge featurebug ,但会覆盖 feature离开 bug . 拉动后我应该做的下一个正确步骤是什么? (通过 TortoiseHg) ,以便我可以获得错误修复代码,并在那里保留功能代码?

这是 hello-world-feature 的最终存储库 View
alt text

最佳答案

“始终 merge ”选项不会按照您的想法进行操作。

它只 merge 未提交的更改。

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

merge 已提交的更改,即。 merge 分支,您需要进行显式 merge 。

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

让我扩展一下“始终 merge ”复选框的作用。

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

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

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

Confirm Update

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

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

关于Mercurial 更新将覆盖我的更改而不是 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4395965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com