想想这个问题,我认为你有这样的事情是对的吗?
@ 4[tip]:1 439255c536ee 2013-01-25 10:42 +0000 rob
| More changes on original default branch
|
| o 3 379f384c1d73 2013-01-25 10:41 +0000 rob
| | Changes on named branch B2
| /
| o 2:0 d225da266931 2013-01-25 10:40 +0000 rob
| | Changes on cloned default
| |
o | 1 7088660d3ba6 2013-01-25 10:41 +0000 rob
|/ Changes on original default branch
|
o 0 a02a921256b3 2013-01-25 10:39 +0000 rob
Project Start
您所描述的问题是,当您想保留B2
分支时,您不希望两个头朝上default
:
$ hg heads default --style=compact
4[tip]:1 439255c536ee 2013-01-25 10:42 +0000 rob
More changes on original default branch
2:0 d225da266931 2013-01-25 10:40 +0000 rob
Changes on cloned default
我可以看到两种“解决”这个问题的可能性。一种是简单地关闭“克隆”默认分支(至少在您的存储库中):
$ hg update 2
$ hg commit -m "Closing cloned default" --close-branch
$ hg heads default --style=compact
4[tip]:1 439255c536ee 2013-01-25 10:42 +0000 rob
More changes on original default branch
这意味着如果你发出一个hg update default
,它不应该是模棱两可的,我猜这是问题的一部分。
另一种方法是从另一个默认分支执行“空合并”:
$ hg update
$ hg -y merge --tool=internal:fail 2
$ hg revert --all --rev .
$ hg resolve -a -m
$ hg commit -m "Merged cloned default"
这些方法的主要区别在于,使用该--close-branch
选项时,您仍然可以在使用时看到额外的头hg heads -c
……它仍然是头,但它只是在元数据中设置了一个标志,表示它已关闭。你仍然可以更新到关闭的分支,甚至提交对它的更改。进行合并你根本看不到头部,因为它不再是头部。
这两种方法都意味着您仍然可以将更改拉到 B2 分支 - 但是,如果在您要从中拉出的存储库中,他们会在默认情况下进行更改并将这些更改合并到 B2(通常在修复错误等时使用),您将点击以后有同样的问题,只好重复上面的。
我希望这是有道理的。当然,如果您稍后推送到另一个仓库,您也将推送关闭/合并的变更集。明智的做法是克隆您的存储库并在本地尝试这些方法以检查这是否是您真正想要的。