gpt4 book ai didi

mercurial - 为什么 Mercurial merge 变更集包含没有冲突的项目?

转载 作者:行者123 更新时间:2023-12-02 22:52:43 26 4
gpt4 key购买 nike

鉴于此存储库:

A1 - A2 - A3 - A4 - A5

..您执行hg pull,它从远程存储库中提取另外两个变更集,为您提供两个头:

A1 - A2 - A3 - A4 - A5
\
B3 - B4

假设您进行了 hg merge 操作,得到了 M1 merge changeset :

A1 - A2 - A3 - A4 - A5----\
\ M1
B3 - B4 --------/

现在 hg out 将列出 M1...

如果您执行hg diff -c M1,您会看到:

  • 在 B3 和 B4 中添加的文件
  • 在 B3 和 B4 中修改但不存在冲突的文件的差异(A3-A5 中未修改文件)

为什么 M1 merge 变更集包含这些项目?为什么需要将此变更集推送到远程存储库?

这些更改已经存在于远程存储库中的 B3 和 B4 中。我理解为什么 merge 变更集将包含 A3-A5 和 B3-B4 中都有更改的文件,并导致文件的新 merge 版本。但我不明白为什么变更集会包含不存在冲突的项目。 M3 的推送不会重复远程存储库中已有的更改吗?

最佳答案

我能想到的最简单的表达方式是 B3 和 B4 以 A2 作为其更改的基础。为了使所有内容回到 1 头而不是 2 头, merge 表示一个变更集,它接受 B3 和 B4 中的所有更改并将它们应用到 A5 之上。

看起来像这样的另一部分原因是当您 merge B4 时您在 A5 上。如果您曾在 B4 上进行 merge ,则 merge 将在 B4 之上显示 A3、A4 和 A5 的更改(当您调用 hg diff -c M1 时,您将在 B4 上)。

不,推送 merge 不会真正以任何您认为多余的方式重复更改。我唯一一次看到重复的更改是当有人重新设置从其他地方提取或已经推送的更改集时。

关于mercurial - 为什么 Mercurial merge 变更集包含没有冲突的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233264/

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