You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mercurial仓库添加subrepo出错致默认分支多HEAD,如何恢复单HEAD?

修复Mercurial仓库双HEAD问题(Rev 110添加subrepo出错)

别慌,完全不用重新创建仓库!你可以轻松把仓库恢复成单HEAD状态,我来一步步教你怎么做:

第一步:确认当前HEAD状态

先运行这个命令查看两个HEAD的具体信息,搞清楚哪个是你想保留的分支:

hg heads

执行后会列出所有HEAD的变更集ID、提交信息,你可以结合hg log进一步核对,找到Rev 110的变更集ID(假设是abc123,实际以你的输出为准)。

方案一:丢弃错误提交,回到Rev 110的干净状态

如果那4次subrepo提交完全是错误的,想彻底删掉它们:

  1. 先回到Rev 110的状态:
hg update -r abc123
  1. 移除Rev 110之后的所有错误提交(包括双HEAD分支):
hg strip -r "children(abc123)"

注意:如果你的Mercurial没启用strip扩展,需要先在仓库的.hgrc文件里添加以下内容,再重新执行命令:

[extensions]
strip =

方案二:保留其中一个分支,合并解决双HEAD

如果其中一个HEAD的提交是有用的,想保留下来:

  1. 更新到你想作为主分支的HEAD:
hg update -r <你要保留的变更集ID>
  1. 合并另一个HEAD:
hg merge <另一个HEAD的变更集ID>
  1. 如果出现冲突,手动解决后提交合并:
hg commit -m "Merge to resolve dual HEADs caused by subrepo mistake"

执行完后仓库就会回到单HEAD状态。

重要提醒

  • 操作前最好复制整个仓库文件夹做备份,万一操作失误还能恢复;
  • 如果这是共享仓库,要确保其他协作者还没拉取这些错误提交,不然他们需要同步执行相同的操作来保持仓库一致。

内容的提问来源于stack exchange,提问作者Daniel Farrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:20:03