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

如何搭配HgGit使用hg amend避免unknown revision错误

解决Mercurial修改历史后推送至GitHub出现abort: unknown revision错误的问题

问题现象

使用hg amend、hg rebase等修改历史的命令后,执行推送命令(如hg push -B my-branch)到GitHub的Git仓库时,会触发如下错误:

$ hg push -B my-branch
pushing to git+ssh://git@github.com:...
searching for changes
abort: unknown revision 'xxxxx'!

原因分析

hg amend、hg rebase这类命令会重写本地提交历史,生成全新的修订版本ID。由于推送目标是Git仓库(通过hg-git扩展对接),此时本地Mercurial仓库的历史已与远程Git仓库历史分叉,远程仓库无法匹配到你本地新生成的修订ID,因此抛出未知修订错误。

解决方案

1. 强制推送覆盖远程历史

因为本地历史已被修改,必须让远程仓库接受新的历史,使用--force参数强制推送:

hg push -B my-branch --force

注意:若有其他协作者在该分支工作,强制推送会覆盖他们的本地修改,务必提前沟通确认。

2. 避免在已推送分支上修改历史

若分支已推送到远程,尽量避免使用amend、rebase这类改写历史的命令。如需调整提交,优先使用hg commit --amend修改最后一个未推送的提交,或用hg merge处理分支,保留历史完整性。

3. 检查并更新hg-git扩展

旧版本的hg-git扩展可能存在Git与Mercurial修订ID映射的bug,先查看扩展版本:

hg version --extensions

若版本较旧,通过包管理器或官方渠道更新该扩展。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:42:03