从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 mergehg 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
相关产品推荐
相关产品推荐

