是否有可能撤消意外的“hg unshelve”?

时间:2017-03-29 13:54:07

标签: mercurial

现在我的项目中有几百行代码,分散在六个类中,我并不期待逐个跟踪它们。

2 个答案:

答案 0 :(得分:4)

不,但这是一个可以避免的问题

不是hg shelve,而是hg commit --secret。这将在存储库中创建一个“真正的”提交,当您不再需要它时,可以对其进行重新定位或剥离(hg strip)。它也可以使用hg histedithg fold折叠成另一个变更集(后者需要Evolve扩展,这在编写时是实验性的,而前者是交互式的,可能很难编写脚本)。

--secret标志确保在您在变更集上手动运行hg phase -d REV之前,不会意外推送变更集。

答案 1 :(得分:2)

是的,只需几步。 unshelve的帮助指定“如果成功应用搁置的更改,则包含搁置更改的捆绑包将移动到备份位置(.hg / shelve-backup)。”所以hg update --clean将返回到pre-unshelve状态,除非你在平均时间中添加了更改,在这种情况下你需要弄清楚如何在不需要的补丁之前恢复世界。然后,如果您希望在您喜欢的任何条件下重新执行取消搁置,您可以单独重新应用存储在备份中的补丁。无论如何,备份包含您认为缺失的数据。