0

我最近让 IDE 替换了整个项目中的一个琐碎文本,并且只有在对 Mercurial 进行其他更改后才意识到这个错误。我惊慌失措并且(对 Mercurial 知之甚少,现在在阅读了权威指南开始更好地了解它之后)尝试了所有似乎使我的错误“消失”的命令。不用说,这是我并不引以为豪的举动。

我记得尝试过的事情是hg update tiphg rollback。由于我仅在本地计算机上使用 Mercurial,并且不从任何其他存储库中提取或推送,我认为这些命令不会导致我的主要问题:现在缺少很多文件 - 正是我让 IDE 制作的文件中的错误替换。

困扰我的是,我已经hg status --change REV找到了所有在修订中更改的文件,而被删除的文件并没有出现在那里。

PHPStorm 有一个本地历史记录,它显示了哪些文件现在丢失了。那个(只有那个?)使我能够找到各个文件并恢复到它们最后一个已知的修订版

hg log -l 1 path/to/foo.txt
hg revert -r <my revision> path/to/foo.txt

...但这对于数百个已更改的文件来说太耗时了。请告诉我有更好的方法。PHPStorm 历史记录很好,也可以恢复文件,但它会将它们恢复到已经被错误更改的位置。

非常感谢您的帮助,我发誓要学习和欣赏 Mercurial,而不仅仅是从今天开始的上下文菜单项。

4

1 回答 1

1

如果您愿意丢失因错误或错误之后提交的更改,您可以返回到错误之前的修订版,并从那里开始工作。用于hg log找出您需要的修订版,并hg update --rev XX转到该修订版。如果您不确定您想要哪个版本,请更新到各种版本并查看。

一旦您更新到正确的版本,您就可以从那里继续工作。下次提交时,您将自动创建一个您将在其上工作的新分支,其中不会有错误。如果你愿意,你可以回到原来的分支并关闭它。

您甚至可以取回在您将错误提交到您回滚到的修订版之后发生的任何正确提交。在旧分支上,识别错误后的修订,并在该修订和该分支的尖端之间进行比较。然后,看看您是否可以将差异作为补丁应用到您的新分支上。但是,您仍然会丢失与错误相同的提交中的任何更改。

于 2014-02-15T04:08:36.670 回答