Mercurial可以合并一个不是头的命名分支吗?

时间:2009-10-26 16:08:02

标签: mercurial merge branch

基本上,我有dev分支,我喜欢做的是在实现某些东西时创建一个功能分支,然后将其合并。所以发生如下情况

 a
 b
 c
 d - dev
/ 
e
f - feature

由于dev不是头脑,是否仍然可以将dev设置为dev和feature指向f?

我很确定git可以做到这一点很好,但似乎无法说服Mercurial做同样的事情......

2 个答案:

答案 0 :(得分:19)

Carl Meyer是对的。你正在考虑作为一个git用户,Mercurial以不同的方式处理事情。

您可以执行Carl建议的操作,并强制下一次提交在dev分支上。如果我看到它,我个人觉得这很混乱,因为开发分支会有不连续性。

我处理它的方法是将功能分支合并到:hg update dev && hg merge feature && hg commit -m 'Merge in the completed feature.'

这将产生如下图形:

  a - dev
  b - dev
  c - dev
  d - dev
 /|  
e | - feature
f | - feature
 \|
  g - dev

对我而言,这清楚地说明了究竟发生了什么。您完成了分支以获取新功能并将其合并到dev分支中。在此期间,dev没有其他提交的事实只是巧合而不必改变工作流程。

答案 1 :(得分:6)

hg中的命名分支(与git不同)不要“指向”任何地方。分支名称不是特定转速的可移动别名。每个提交都有一个元数据标记,用于命名提交的分支;就是这样。

在这种情况下,如果你没有在dev分支上从“d”下降的单独提交,那么你需要做的就是运行“hg branch dev”然后你的下一次提交,从“f”开始,将回到分支开发。我认为这将实现您正在寻找的结果。

编辑:这样可行,但史蒂夫·洛什建议进行实际合并会带来更明智的历史。