在Mercurial中移动分支开始

时间:2011-09-29 11:46:55

标签: mercurial

我的问题类似于Mercurial move changes to a new branch,但不完全相同。

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

O 7: default
|
O 6: default
|
|  O 5: newbranch
|  |
|  O 4: default
|  |
|  O 3: default
| /
O 2: default
|
O 1: default

所以默认现在有两个开放的头:7和4.我想摆脱开放的头4但当然还有3和4合并回“主”< em> default 稍后我们将 newbranch 合并回main(现在合并它们是不受欢迎的,因为它会将更改带入 default 我们不希望那里尚未)。

问题是:处理此问题的最佳方法是什么?

在5上执行--close-branch,从2创建新分支并重新应用修订版3-5?

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

更新:由于这已被其他人提取,我不想重新修改相关修订版。强制同事重新创建/切换分支是可以的,因为这只会影响一个人而不是5个人。

1 个答案:

答案 0 :(得分:3)

要摆脱额外的默认头,你可以:

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不会被标记为命名分支的一部分。如果这对您来说非常重要,那么您应该关闭额外的默认头部和newbranch头部,然后重新开始使用一个以修订版2为根的新分支。