Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial能否合并非';没有头吗?_Mercurial_Merge_Branch - Fatal编程技术网

Mercurial能否合并非';没有头吗?

Mercurial能否合并非';没有头吗?,mercurial,merge,branch,Mercurial,Merge,Branch,基本上,我有一个dev分支,我喜欢做的是在实现某些东西的同时创建一个特性分支,然后将其合并回来。因此,出现如下情况 a b c d - dev / e f - feature 既然dev不是一个head,那么仍然可以将dev提升到feature,使dev和feature都指向f吗 我很确定git可以很好地做到这一点,但似乎无法说服Mercurial也这么做……hg中的命名分支(与git不同)没有“指向”任何地方。分支名称不是特定版本的可移动别名。每个提交都有一个元数据标记,用于命名提

基本上,我有一个dev分支,我喜欢做的是在实现某些东西的同时创建一个特性分支,然后将其合并回来。因此,出现如下情况

 a
 b
 c
 d - dev
/ 
e
f - feature
既然dev不是一个head,那么仍然可以将dev提升到feature,使dev和feature都指向f吗

我很确定git可以很好地做到这一点,但似乎无法说服Mercurial也这么做……

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

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


编辑:这会起作用,但Steve Losh关于进行实际合并的建议将导致更合理的历史。

卡尔·迈耶是对的。你是git用户,Mercurial处理事情的方式不同

你可以按照Carl的建议去做,然后强制下一次提交到dev分支上。如果我看到它,我个人会感到相当困惑,因为在开发分支中会有一个中断

我处理它的方法是将功能分支合并回:
hg update dev&&hg merge feature&&hg commit-m“合并到已完成的功能中”。

这将产生如下图形:

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

对我来说,这清楚地说明了发生了什么。您为一个新功能分支,并在完成时将其合并到dev分支中。在此期间,在dev上没有其他提交只是巧合,不必更改工作流。

Hm。我一直想尝试使用您的方法,但我不太记得我做错了什么。也许我会玩得更久一点,看看我能不能弄明白。谢谢你们两个!你在哪个分支上运行那个命令?戴夫?如果在Feature上执行,会给我一个“交叉分支”错误实际上这也是Git中更好的工作流,即使Git允许您更改分支的提交id引用+1.