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 - Fatal编程技术网

在Mercurial中移动分支开始

在Mercurial中移动分支开始,mercurial,Mercurial,我的问题与类似,但不完全相同 我的一位同事开始开发一个新功能,并发布了一些本地提交。然后他注意到“哦,好吧,那应该进入一个命名的分支”,于是创建了一个。问题是,以前的提交应该已经在该分支中了。因此简化的历史现在看起来有点像这样: O 7: default | O 6: default | | O 5: newbranch | | | O 4: default | | | O 3: default | / O 2: default | O 1: default 所以默认值现在有两个开放

我的问题与类似,但不完全相同

我的一位同事开始开发一个新功能,并发布了一些本地提交。然后他注意到“哦,好吧,那应该进入一个命名的分支”,于是创建了一个。问题是,以前的提交应该已经在该分支中了。因此简化的历史现在看起来有点像这样:

O 7: default
|
O 6: default
|
|  O 5: newbranch
|  |
|  O 4: default
|  |
|  O 3: default
| /
O 2: default
|
O 1: default
所以默认值现在有两个开放的头部:7和4。我想去掉OpenHead4,但当然,当我们稍后将newbranch合并回main时,仍然会将3和4合并回“main”默认值(现在合并它们是不希望的,因为它会将更改带入默认值,而我们现在还不希望这样)

问题是:处理这个问题的最佳方式是什么

是否在5上关闭分支机构,在2上创建新分支机构并重新应用修订版3-5

据我所知,简单地说“newbranch从3开始,而不是5开始”并没有什么好办法


更新:因为这已经被其他人删除了,所以我不想重新确定有问题的修订版本的基础。强制同事重新创建/切换分支是可以的,因为这只会影响一个人而不是5个人。

要删除额外的默认头,您可以:

hg update -r 4
hg commit --close-branch -m "Closed extra default head.  The changes from this branch will be merged along with 'newbranch', once it is complete."
当您最终合并
newbranch
时,它将包括修订版3-5以及您在5之上提交的任何其他版本


唯一的潜在问题是修订版3-4不会被标记为命名分支的一部分。如果这对您来说真的很重要,那么您应该关闭额外的默认head和
newbranch
head,并从第2版的新分支开始。

只是用一个小测试库尝试了一下,这实际上正是我想要的。一旦我想一想(并在马赫图中看到),这完全是有道理的。谢谢