Mercurial 无法中止中断的重新基址

Mercurial 无法中止中断的重新基址,mercurial,Mercurial,我的存储库显然陷入了中断的重基:如果我尝试新的提交,我会收到以下消息: abort: rebase in progress (use 'hg rebase --continue' or 'hg rebase --abort') 但是,hg-rebase--abort失败并显示消息 abort: unknown revision '<hex id>'! 中止:未知版本“”! 我甚至尝试了hg-rebase--continue,但得到了相同的错误hg验证认为一切正常。有没有一种方法

我的存储库显然陷入了中断的重基:如果我尝试新的提交,我会收到以下消息:

abort: rebase in progress
(use 'hg rebase --continue' or 'hg rebase --abort')
但是,
hg-rebase--abort
失败并显示消息

abort: unknown revision '<hex id>'!
中止:未知版本“”!
我甚至尝试了
hg-rebase--continue
,但得到了相同的错误<代码>hg验证认为一切正常。有没有一种方法可以让存储库不被删除,或者我必须把它扔掉,重新克隆?(幸运的是,我能够简单地
hg克隆
repo,并将问题抛在脑后。但我仍然想知道更好的解决办法)


我不知道存储库是如何进入这种状态的;几个月前我可能做了什么导致了它,我可能不会。我刚回到回购协议,就碰到了这个。(我偶尔会使用rebase,从来没有遇到过问题)。我寻找了一个备份包,但没有找到。

hg debugcheckstate
专门检查“dirstate的正确性”。我不确定它的检查是否是由
hg verify
执行的检查的子集,但它不会造成伤害

在类似的情况下,您可以继续使用
hg debugsetparents提示;hg up-C.
(可选地用变更集ID替换
tip
),然后使用
hg strip
抛出您不想保留的任何部分重定基础的提交。这基本上覆盖了通常的
hg update
系统,并手动将工作目录的父目录设置为
tip
。然后,
hg up-C
会清理工作目录


这样做可能会丢失数据;您应该有一个备份(例如在Bitbucket上),您可以从中
hg拉取任何丢失的变更集。在最坏的情况下,可能需要一个新的克隆。

能否提供
hg verify
的输出。根据最后一条消息,出现问题。是否使用MQ?我想知道你是否正在重新调整补丁队列,现在补丁队列消失了…我想知道这是否就是为什么尝试中止或继续重基会出现“未知修订”错误的原因。当然是纯粹的推测。我使用了mq,但我认为这里没有涉及到它。我记得当时看到这个问题,无法解决它,不得不放弃它,转而做其他事情。但我更关心的是不屈不挠的一般问题;如果这可以通过hg verify,是否还有其他更仔细的检查方法?附言。与此同时,我通过克隆损坏的回购协议(没问题)并手动纠正上游路径重新开始工作。但是我保留了损坏的版本,所以我可以测试如何修复它的建议。谢谢你的建议,凯文。我会去寻找我的楔形存储库(我不再记得我把它藏在哪里)并尝试一下。重新备份:在这种情况下,包括.hg子目录在内的整个项目目录的递归副本是最好和最简单的。现在克隆
hg
(因为repo是楔入式的)已经太迟了,而早期的克隆将丢失一些已提交或未提交的工作。