2010-12-06 57 views
20

我有两个头,我们称他们为“A”(好头)和“B”(坏头)。我想合并他们采取一切从A和没有从B.基本上,我合并的A和B是A.mercurial - 通过放弃一个变更集“合并”

当我尝试汞合并,它开始问我关于这个文件,并且不可避免地我得到陷入麻烦。我不想要这些!我怎么能告诉它合并它们并最终以A结束,最好没有任何中间步骤?

回答

18

一件事:

hg --config ui.merge=internal:fail merge X 
hg revert --all --rev . 

另一种方法中提及我偶然发现并开始使用最近的一些个人回购协议,只是使用带分支的关闭分支交换机。例如

$ hg update B 
$ hg commit --close-branch -m "Abandoning branch" 

在我的推理中,如果你完全吹捧一个分支而不是另一个分支,那根本就不是合并,而把它称为是愚蠢的。我对自己来说相对来说并不陌生,而且我似乎还记得 - 自从一开始,分支分支就没有出现过,也许这就是为什么它没有像我通常看到的合并旋转一样具有牵引力。

27

从第22节的水银提示。在合并时保留“我的”或“他们的”文件。

偶尔要合并两个头,但你想从其中一个头,一个所谓的伪合并扔掉所有更改。您可以通过使用ui.merge配置条目覆盖合并:

$ hg --config ui.merge=internal:local merge #keep my files 
$ hg --config ui.merge=internal:other merge #keep their files 

这里本地方式工作目录的父,另一种是你想要合并的头。这将会忽略来自另一个主管的更新。

要合并X到当前版本,而不让任何来自X的变化才能通过,这样做:https://www.mercurial-scm.org/wiki/PruningDeadBranches

$ hg update -C tip # jump to one head 
$ hg merge otherhead # merge in the other head 
$ hg revert -a -r tip # undo all the changes from the merge 
$ hg commit -m "eliminate other head" # create new tip identical to the old 
+0

虽然原来的问题可能不是真正的合并,但这是我为我的问题发现的第一个答案。而且我甚至通过Mercurial Merge和Tips and Tricks页面来轻松。谢谢! – 2011-02-23 21:51:37

+1

据我所知,hg仍然会使用internal:local合并算法从“其他”分支添加新文件。这看起来像一个错误,但警告空洞。 – 2013-02-15 18:28:48

相关问题