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

Mercurial 3.6.3中拉取远程代码后本地提交被穿插,如何将本地提交置于提交链顶部?

解决Mercurial 3.6.3本地提交变基到远程最新提交的问题

别担心,这个问题在老版本Mercurial里很常见——hg pull -u确实会直接把你切换到远程最新提交,让你的本地提交变成独立的分支头。下面分两种场景给你一步步的解决方案:

场景1:你已经执行了hg pull -u,现在本地有两个提交头

  1. 先查看所有未合并的提交头,找到你本地两次提交对应的那个头的哈希值:

    hg heads
    

    输出里会列出所有分支顶端的提交,你可以通过提交信息、作者认出自己的提交,记下它的哈希值(比如abc123)。

  2. 切换回你的本地提交分支:

    hg update abc123
    
  3. 确保rebase扩展已启用(老版本Hg默认没开启这个功能):
    打开仓库根目录或用户目录下的.hgrc文件,检查是否有以下内容,没有的话就加上:

    [extensions]
    rebase =
    
  4. 执行变基,把你的本地提交移到远程最新提交的顶部:

    hg rebase -d default
    

    这里default是远程默认分支的名字,如果你的远程分支叫别的,替换成对应名称即可。变基过程中如果遇到冲突,解决后用hg add标记冲突文件已处理,再执行hg rebase --continue直到完成。

场景2:你还没执行hg pull -u,想提前避免这个问题

  1. 先拉取远程提交,但不更新本地工作区:

    hg pull
    

    这个命令只会把远程的新提交下载到本地仓库,不会改变你当前的工作区和提交位置。

  2. 同样确保rebase扩展已启用(参考场景1的步骤3)。

  3. 直接变基到远程最新提交:

    hg rebase -d default
    

    完成后,你的两次本地提交就会排在远程最新提交的后面,成为提交链的顶部了。

额外注意事项

  • 变基前一定要确保本地工作区干净,用hg status检查,如果有未提交的修改,要么先提交,要么用hg diff > changes.patch导出修改,再执行hg revert --all清空工作区,变基完成后用hg patch changes.patch恢复修改(老版本Hg没有shelve暂存命令,只能用这种方式)。
  • 如果变基时冲突反复出现,可以考虑先备份本地提交,再重新克隆远程仓库,最后用hg import导入你的提交补丁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:27:41