在Mercurial中使用hg revert

use*_*114 62 mercurial

我正在使用Mercurial.我做了一个存储库的克隆.为了调试,我在java文件中更改了几行代码.我没有提交这些更改.我只是想将它们恢复到原始状态,就像在存储库中找到的那样.我尝试了hg revert filename.java,它确实还原了它,但是现在当我这样做时hg status,我看到我的文件夹中添加了其他文件,如:

? filename.java.orig
Run Code Online (Sandbox Code Playgroud)

我可以删除这些文件,为什么Mercurial在使用revert时会生成它们?

Foo*_*man 87

您还可以使用标志--no-backup,并且不会创建.orig文件

hg revert --no-backup filename.java
Run Code Online (Sandbox Code Playgroud)

从Mercurial 2.0开始,您可以使用标志-C来抑制.orig文件的创建

hg revert -C filename.java
Run Code Online (Sandbox Code Playgroud)

  • 我不确定我是否理解`-C`对于`--no-backup`是多么简短......它是一个`C`无论如何还原? (8认同)

Han*_*Gay 48

是的,你可以删除它们.这是一个安全功能,以防你还原你不想恢复的东西.


Jon*_*aun 23

我发现净化扩展很方便.用法:

hg purge
Run Code Online (Sandbox Code Playgroud)

"此扩展程序清除Mercurial未跟踪的所有文件和目录" - 包括.orig文件,但不包括被忽略的文件(除非您使用--all).


Ted*_*eid 8

正如其他人所指出的那样,您可以安全地删除这些文件.

您可以通过从repo的根目录执行此命令来删除它们:

rm `hg st -un | grep orig`
Run Code Online (Sandbox Code Playgroud)

如果要还原,并且根本不关心备份原始文件,您需要的命令是:

hg update -C
Run Code Online (Sandbox Code Playgroud)


Pet*_*ake 6

这些是您还原之前的文件副本.如果您不需要,可以手动或使用Purge扩展名删除它们:

hg clean
Run Code Online (Sandbox Code Playgroud)

  • Casebash:啊,对 - purge扩展名提供两个名称下的命令:`hg purge`和`hg clean`. (2认同)

And*_*Dog 5

可以为合并和还原操作创建这些备份文件(参见手册页).您可以根据需要添加忽略规则,或者只是在不再需要时删除它们.