33

我正在做一个项目,我有一个提交,该提交引入了一个没有立即发现的主要问题的功能。现在我想完全删除该修订,同时保持其工作,但我很难围绕这个 3 路合并。这是我的项目的简化图。

o 变更集:134:7f81764aa03a
| 标签: 小费
| 家长:128:451d8a19edea
| 摘要:退出变更集 451d8a19edea
|
| @变更集:133:5eefa40e2a29
| | 摘要:(更改我需要保持保持)
| |
*剪切 3 次提交*
| o 变更集:129:5f6182a97d40
|/ 摘要:(更改我需要保留)
|
o 变更集:128:451d8a19edea
| 摘要:(引入了一个主要问题的变化)
|
o 变更集:127:4f26dc55455d
| 摘要:(对于这个问题,摘要无关紧要)

如果我理解正确的话,r127 和 r134 是完全一样的。当我hg up -C -r 133然后运行hg merge时,Meld 会弹出我的文件之一的三种形式:本地、基础和其他。本地似乎是 r133,但我很难理解“基础”和“其他”的含义。

4

2 回答 2

35

本地是 r133

其他是r134

基数是 r128(r133 和 r 134 的共同祖先)

当您执行 3 路合并时,它会将所有这三个合并在一起,以帮助您决定采取什么以及从哪里采取。通过查看其他修订版中的更改以及共同祖先的外观,您可以就保留什么和更改什么做出更明智的决定。

于 2010-10-02T16:58:23.490 回答
11

您的问题确实令人困惑,但这里有一些信息可能会对您有所帮助。

  • 什么是基础?

Base 是您当前已签出并处理的修订版本的未修改版本。其他更改可能已经分叉(您可以在当前本地和基础之间进行修订!)。它只是最近的修订版,之后没有其他分叉从那里转移(同一父级)(在您的情况下为 r128)

  • 什么是头?

Head 是版本控制中的最新版本。如果您仅在一份副本上单独工作,则它可能是基础。但是同事可能已经修改了同一个文件并将其签入版本控制,然后 head 比您的基础晚。

  • 什么是本地?

Local 是您的修改版本(在您的情况下为 r133)

  • 什么是其他?

其他是一些叉子/分支,也有你的 Base 作为父级(在你的情况下为 r134)

  • 三向合并是如何工作的?

3种方式合并工作(至少在融合中)分层。通常从左到右是这样的:

本地>基地>其他/头

local/base 主要是微不足道的,因为它正是您修改的内容

然后您可以将您的更改合并到头部修订版或您的同事之一或其他任何内容中。

可能有多个其他/头部修订,但是合并不是您的工作,因此超过 3 种方式比较没有意义。

于 2010-10-02T17:05:22.117 回答