我的存储库陷入明显中断的rebase:如果我尝试新的提交,我收到此消息:
abort: rebase in progress
(use 'hg rebase --continue' or 'hg rebase --abort')
但hg rebase --abort
失败并显示消息
abort: unknown revision '<hex id>'!
我甚至试过hg rebase --continue
,但得到了同样的错误。 hg verify
认为一切正常。有没有办法让我的存储库得到解开,或者我是否必须将其丢弃并制作一个新的克隆? (幸运的是,我能够简单地hg clone
破坏的回购并留下问题。但我仍然想知道一个更好的出路。)
我不知道存储库是如何进入这种状态的;我可能在几个月前做过一些事情,我可能不会。我刚刚回到了回购中并遇到了这个问题。 (我偶尔使用rebase,从来没有遇到过问题)。我找了一个备份包,但没看到一个。
答案 0 :(得分:1)
hg debugcheckstate
专门检查了“dirstate的正确性”。我不确定它的检查是否是hg verify
执行的检查的子集,但它不会受到伤害。
在与此类似的情况下,您可以继续使用hg debugsetparents tip; hg up -C .
(可选择使用变更集ID替换tip
),然后使用hg strip
删除任何部分重新定位的内容承诺你不想保留。这基本上覆盖了通常的hg update
系统,并手动将工作目录的父级设置为tip
。 hg up -C
然后清理工作目录。
这样做可能会丢失数据;你应该有一个备份(例如在Bitbucket上),你可以hg pull
任何丢失的变更集。在最坏的情况下,可能需要新的克隆。