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

从default创建BRANCH1后无法用hg push --new-branch推送,求非-f方案

解决Mercurial推送新分支时的"创建新远程头"问题

别着急,我来帮你搞定这个Mercurial推送的问题!你遇到的这个报错,是因为远程仓库里的BRANCH2分支已经有了本地没有的新提交,默认情况下Mercurial会阻止创建新的远程分支头(避免仓库状态混乱),所以哪怕你用了--new-branch也会失败。不用hg push -f也能解决,给你两种靠谱的方法:

方法一:同步并合并远程变更(推荐,保持仓库状态整洁)

  • 第一步:拉取远程仓库的所有最新变更,把包括BRANCH2在内的所有远程提交同步到本地:
    hg pull
    
  • 第二步:查看当前仓库的分支头状态,确认BRANCH2的远程变更情况:
    hg heads
    
  • 第三步:切换到BRANCH2分支,合并本地与远程的变更:
    hg checkout BRANCH2
    hg merge
    
    如果合并过程中出现冲突,手动解决冲突后,提交合并结果:
    hg commit -m "Merge remote changes for BRANCH2"
    
  • 第四步:再次尝试推送你的BRANCH1分支:
    hg push --new-branch
    
    这时候远程仓库的分支头已经和本地一致,就不会再触发报错了。

方法二:仅推送指定分支(适合只想推送BRANCH1,暂时不想处理其他分支的场景)

如果你确实只需要推送BRANCH1,不想处理BRANCH2的变更,可以直接指定推送的分支,Mercurial就不会检查其他分支的头状态:

hg push --new-branch -b BRANCH1

这个命令会只推送BRANCH1分支的变更,绕过对其他分支的头检查,自然也就不会出现那个报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:06:28