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

Cal*_*yth 7 merge mercurial branch

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

 a
 b
 c
 d - dev
/ 
e
f - feature
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*osh 19

卡尔梅耶是对的.你正在考虑作为一个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
Run Code Online (Sandbox Code Playgroud)

对我来说,这清楚地说明了发生了什么.您完成了分支以获取新功能并将其合并到dev分支中.同时在dev上没有其他提交的事实只是一个巧合而不必改变工作流程.


Car*_*yer 6

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

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

编辑:这将有效,但史蒂夫洛什建议进行实际合并将导致更合理的历史.