【问题标题】:Are my changes gone after "hg revert"?“hg revert”之后我的更改消失了吗?
【发布时间】:2011-12-19 11:41:17
【问题描述】:

在我最后一次提交之后,我写了一堆代码。在再次提交之前,我运行了hg add。 它添加了一些我不感兴趣的文件,所以我运行了

$ hg revert --all

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

【问题讨论】:

    标签: mercurial


    【解决方案1】:

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

    你可以使用

    $ hg status --all --include "**.orig"
    

    查看工作副本中的所有.orig 文件。将您需要的内容移回,重新添加并提交。

    在相关说明中:人们有时会将 --no-backup 标志添加到他们的 [defaults] 部分,以摆脱 .orig 文件的 Mercurial 分散。我认为这是一个非常糟糕的主意...只需忽略 .orig 文件,而是添加

    syntax: glob
    *.orig
    

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

    【讨论】:

    • 当您“将需要的文件移回,重新添加并提交”时,您应该为每个文件手动将 foo.txt.orig 重命名为 foo.txt,还是有更好的方法?
    猜你喜欢
    • 2012-12-18
    • 2012-11-25
    • 2011-01-15
    • 1970-01-01
    • 2011-07-07
    • 2019-01-06
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多