【问题标题】:Mercurial: How do you undo changes?Mercurial:您如何撤消更改?
【发布时间】:2010-07-09 15:22:21
【问题描述】:

使用 Mercurial 时,如何撤消自上次提交以来工作目录中的所有更改?看起来这将是一件简单的事情,但它正在逃避我。

例如,假设我有 4 次提交。然后,我对我的代码进行了一些更改。然后我决定我的更改很糟糕,我只想回到我上次提交时的代码状态。所以,我认为我应该这样做:

hg update 4

其中 4 是我最新提交的修订号。但是,Mercurial 不会更改我工作目录中的任何文件。为什么不呢?

【问题讨论】:

标签: version-control mercurial


【解决方案1】:

hg revert 可以解决问题。

它会将您恢复到最后一次提交。

--all 将还原所有文件。

查看其手册页描述的链接。

hg update 通常用于在您从不同的 repo 或交换分支中提取后刷新您的工作目录。 hg up myawesomebranch。它还可以用于恢复到特定版本。 hg up -r 12

【讨论】:

  • 当我这样做时,当我检查 hg 状态时,我可以看到我已恢复的每个文件的 .orig 文件。如何处理?
【解决方案2】:

hg revert 的替代解决方案是hg update -C。您可以使用这个命令放弃本地更改并更新到某个版本。

我通常更喜欢输入hg up -C,因为它比hg revert --all --no-backup 短:)

【讨论】:

    【解决方案3】:

    hg revert是你的朋友:

    hg revert --all 
    

    hg update 将您对当前工作副本的更改与目标版本合并。将最新版本与您更改的文件(=当前工作副本)合并会导致您已经拥有的相同更改,即它什么都不做:-)

    如果你想阅读 Mercurial,我推荐非常棒的教程 Hg Init

    【讨论】:

    • pableu:当您的工作副本发生更改时,hg update 的工作方式是完全正确的:它将它们合并到目标修订中。当您已经处于该目标修订版时,什么都不会发生。我编辑了答案,以更自信的方式说出来。
    【解决方案4】:
    hg revert --all 
    

    然后

    hg pull -u 
    

    为我工作

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 2011-03-10
      • 2018-02-23
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2013-05-07
      • 2021-05-20
      相关资源
      最近更新 更多