我在存储库中使用了hg shelve,其中有一些未完成的更改,因为我需要切换到另一个头并执行不相关的更改。
当我在另一个头上的工作完成后,我切换回最初使用hg shelve并运行hg unshelve命令的头。结果是:
$ hg unshelve
unshelving change 'default'
adding changesets
adding manifests
adding file changes
added 1 changesets with 4 changes to 4 files (+1 heads)
abort: uncommitted changes
$ hg diff
warning: ignoring unknown working parent 893e15ecb5b4!
$ 我在hg head命令之前和之后运行了unshelve,并看到了相同的输出。提交893e15ecb5b4从来不存在,我不知道Mercurial是从哪里得到的。
如果这与此相关,我正在Ubuntu14.04上运行Mercurial版本2.8.2。
如何才能使存储库恢复到工作状态,以及如何使搁置的更改返回?
发布于 2015-05-13 11:44:28
以下步骤为我解决了这些问题:
hg debugsetparents将已损坏的父版本编号893e15ecb5b4替换为我在使用unshelve之前更新到的正确版本编号unshelve。hg manifest | tr '\n' '\0' | xargs -0 touch再次注意到任何本地更改。patch -p1 < .hg/shelved/default.patch恢复被搁置的更改,在我的示例中,这完全符合hg unshelve本来应该为我做的事情。https://stackoverflow.com/questions/30213156
复制相似问题