如何在Mercurial中拆分主题分支并调整分支拓扑结构?
调整Mercurial线性分支为并行分支的解决方案
当前你的分支线性结构为:
o topicA | | o topicB | | o public_branch
要将其调整为public_branch同时分出topicA和topicB的并行结构,可通过以下两种方法实现:
方案一:使用rebase命令(推荐)
你的原命令无效是因为未正确指定要移动的单一变更集,正确步骤如下:
- 先提交所有未完成的本地修改:
hg commit -m "save local changes" - 执行rebase命令,将
topicA对应的变更集直接迁移到public_branch下:hg rebase -r <topicA的变更集ID> -d <public_branch的变更集ID>- 参数说明:
-r指定需要移动的单个变更集(即topicA对应的rev),-d指定目标分支的基础变更集
- 参数说明:
- 如果仍提示
"nothing to rebase",添加--force参数强制执行:hg rebase -r <topicA_rev> -d <public_branch_rev> --force
方案二:使用graft创建新分支
如果rebase方式无法生效,可通过复制变更集的方式重建分支:
- 切换到
public_branch分支:hg checkout public_branch - 创建临时分支替代原
topicA:hg branch topicA_new - 将原
topicA的变更集复制到临时分支:hg graft <topicA的变更集ID> - 切换回原
topicA分支并关闭它:hg checkout topicA && hg commit --close-branch -m "close old topicA branch" - 将临时分支重命名为
topicA:hg checkout topicA_new && hg branch -m "rename to topicA" topicA
验证结果
执行以下命令查看分支结构,确认已调整为并行状态:
hg log --graph
内容的提问来源于stack exchange,提问作者moctarjallo
相关产品推荐
相关产品推荐

