在"hg revert"之后,我的更改是否已经消失?

Rah*_*hul 7 mercurial

在我上次提交后,我写了一堆代码.在再次投降之前,我跑了hg add.它添加了一些我不感兴趣的文件,所以我跑了

$ hg revert --all
Run Code Online (Sandbox Code Playgroud)

认为所有添加的文件都会消失.它们确实消失了,但我还恢复了自上次提交以来编写的所有代码,这意味着失去了大量的工作!我有什么选择?

Mar*_*ler 12

当您使用hg revert一个或多个--all文件时,Mercurial会以另一个名称保存该文件的备份.这是为了让你更难以失去工作.如果调用该文件foo,您将拥有foo.orig原始版本.

您可以使用

$ hg status --all --include "**.orig"
Run Code Online (Sandbox Code Playgroud)

查看.orig工作副本中的所有文件.移动您需要的那些,重新添加它们并提交.

在相关的注释:人们有时会将--no-backup标志添加到他们的[defaults]部分,以摆脱.origMercurial散布的文件.我认为这是一个非常糟糕的主意......只需.orig通过添加来忽略文件

syntax: glob
*.orig
Run Code Online (Sandbox Code Playgroud)

到你的.hgignore文件.这样更安全,有一天你会很高兴你有这些.orig文件:-)

  • 感谢上帝.哦,你和马丁:-) (3认同)