Asa*_*ers 33 merge mercurial dvcs 3-way-merge
我正在开发一个项目,我有一个提交,它引入了一个主要问题但未立即发现的功能.现在我想完全删除该修订版,同时保持其后的工作,但我很难绕过这种3路合并.这是我的项目的简化图.
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)
如果我理解正确,r127和r134完全相同.当我hg up -C -r 133
然后运行时hg merge
,Meld会弹出我的一个文件的三种形式:本地,基本和其他.本地似乎是r133,但我很难绕过"基地"和"其他"的意思.
Mat*_*ela 35
本地是r133
其他是r134
基数是r128(r133和r 134的共同祖先)
当您执行3向合并时,它将所有这三个合并在一起,以帮助您决定要采取什么以及从哪里采取.通过查看其他修订版中的更改以及共同祖先的外观,您可以做出更明智的决定,了解要保留的内容以及要更改的内容.
The*_*can 11
您的问题确实令人困惑,但这里有一些可能对您有帮助的信息.
Base是您当前已检出并处理的修订版本的未修改版本.可能还有其他变化分叉的地方(您可以在当前本地和基地之间进行修改!).它就是最近的修订版,其他叉子之后没有转移(同一个父母)(在你的情况下为r128)
Head是版本控制的最新版本.如果你只在一个副本上工作,它可能是基础.但是一个co worker可能修改了同一个文件并将其检入版本控制,然后head比你的base更晚.
本地是您的修改版本(在您的情况下为r133)
其他是一些fork/branch,你的Base也是父级的(在你的情况下为r134)
3种方式合并(至少在meld中)分层次地工作.通常从左到右这样:
local> base> other/head
本地/基地大多是微不足道的,因为它正是你所修改的
然后,您可以将您的更改合并到主要版本或您的同事或其他任何人.
可能有多个其他/头部修订,但是然后合并不是你的工作,因此超过3种方式比较没有意义.
归档时间: |
|
查看次数: |
15126 次 |
最近记录: |