我的问题类似于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个人。
答案 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为根的新分支。