Mercurial/Meld中的三方合并是如何工作的?
我正在进行一个项目,在这个项目中,我有一个提交,它引入了一个功能,其中包含一些无法立即发现的主要问题。现在,我想完全删除该修订版,同时保持后续的工作,但我很难在这三方合并的问题上绞尽脑汁。这是我的项目的简化图表 o changeset: 134:7f81764aa03a | tag: tip | parent: 128:451d8a19edea | summary: Backed out changeset 451d8a19edea | | @ changeset: 133:5eefa40e2a29 | | summary: (Change I need to keep keep) | | *snip 3 commits* | o changeset: 129:5f6182a97d40 |/ summary: (Change I need to keep keep) | o changeset: 128:451d8a19edea | summary: (Change that introduced a major problem) | o changeset: 127:4f26dc55455d | summary: (summary doesn't matter for this question) o变更集:134:7f81764aa03a |标签:提示 |家长:128:451d8a19edea |摘要:已备份的变更集451d8a19edea | |@changeset:133:5eefa40e2a29 ||总结:(我需要保留的更改) | | *剪报3* |o变更集:129:5f6182a97d40 |/总结:(我需要保留的更改) | o变更集:128:451d8a19edea |总结:(导致重大问题的变更) | o变更集:127:4f26dc55455d |小结:(小结对这个问题不重要)Mercurial/Meld中的三方合并是如何工作的?,mercurial,merge,dvcs,3-way-merge,Mercurial,Merge,Dvcs,3 Way Merge,我正在进行一个项目,在这个项目中,我有一个提交,它引入了一个功能,其中包含一些无法立即发现的主要问题。现在,我想完全删除该修订版,同时保持后续的工作,但我很难在这三方合并的问题上绞尽脑汁。这是我的项目的简化图表 o changeset: 134:7f81764aa03a | tag: tip | parent: 128:451d8a19edea | summary: Backed out changeset 451d8a19edea | | @ c
如果我理解正确,r127和r134完全相同。当我
hg up-C-r 133
然后运行hg merge
时,Meld会弹出三种形式的文件:local、base和other。local似乎是r133,但我很难理解“base”和“other”是什么意思。local是r133
其他是r134
碱基是r128(r133和R134的共同祖先)
当您执行三方合并时,它会将所有三方合并在一起,以帮助您决定从何处进行合并。通过查看其他版本中的更改以及共同祖先的外观,您可以对保留什么和更改什么做出更加明智的决定。您的问题确实令人困惑,但以下是一些可能对您有所帮助的信息
- 什么是基地
- 头是什么
- 什么是本地的
- 其他的是什么
- 3路合并是如何工作的
可以有多个其他/head修订,但合并不是你的工作,因此超过3种方式比较没有意义。你对head的定义对于mercurial来说并不准确。mercurial的最新版本称为“tip”。小费总是头,但头并不总是小费。在合并中,“head”永远不是“base”,因为“base”是正在合并的两个变更集的最新共同祖先。所以你是说很多变更集都是手动合并的?