我最近让IDE替换了整个项目中的一个简单文本,并且只有在对Mercurial进行其他更改后才识别出该错误。我惊慌失措(对Mercurial很少了解,现在在阅读the definitive guide之后开始更好地了解它)尝试了每一个似乎让我的错误“消失”的命令。不言而喻,这是一个我不为之骄傲的举动。
我记得要尝试过的事情是hg update tip
和hg rollback
。由于我只在我的本地机器上使用Mercurial而不从任何其他存储库中拔出或推送,我认为这些命令不会导致我的主要问题:现在有很多文件缺失 - 实际上是我让IDE生成的文件。错误的替代品。
让我感到困扰的是,我已经hg status --change REV
到find all files changed in a revision,并且删除的文件没有显示在那里。
PHPStorm具有本地历史记录,显示现在缺少哪些文件。那(只有那个?)使我能够hunt down the individual files and revert to their last known revision:
hg log -l 1 path/to/foo.txt
hg revert -r <my revision> path/to/foo.txt
...但对于数百个已更改的文件来说,这太费时了。请告诉我有更好的方法。 PHPStorm历史很好,也可以恢复文件,但它会将它们恢复到已被错误更改的程度。
非常感谢您的帮助,我发誓要学习和帮助从今天开始,Mercurial不仅仅是一个上下文菜单项。
答案 0 :(得分:1)
如果您愿意丢失使用错误或自错误以来提交的更改,您可以在错误发生之前返回修订版本,并从那里开始工作。使用hg log
找出您需要的修订版,并hg update --rev XX
转到该修订版。如果您不确定需要哪个版本,请更新各种版本并查看。
更新到正确的版本后,您可以继续从那里开始工作。下次提交时,您将自动创建一个您将在其上工作的新分支,其中不会出现错误。如果需要,您可以返回原始分支并关闭它。
您甚至可以找回在将错误提交到您回滚到的修订版之后发生的任何正确提交。在旧分支上,识别错误后的修订版本,并在该修订版本与该分支的提示符之间进行差异处理。然后,看看您是否可以将diff作为补丁应用于新分支。但是,您仍将丢失与错误相同的提交中的任何更改。