Mercurial中Revert和Update之间的区别

时间:2010-03-24 10:21:14

标签: version-control mercurial

我刚刚开始使用Mercurial,而且我遇到了一些我不理解的事情。

我对几个文件进行了更改,现在我想要撤消对其中一个文件所做的所有更改(即返回上一次对一个特定文件的提交)。

据我所知,我想要的命令是revert

在我链接的页面中,有以下声明:

  

然而,此操作不会改变   工作的父修订版   目录(或修改版本   未提交的合并)。撤消   未经注册的合并,你可以使用“hg   更新-C -r。“这将重置   父母是第一位父母。

我不明白两者之间的区别(hg reverthg update -C -r)。任何人都可以告诉我这个区别吗?在我的情况下,我真的希望还原或更新能够摆脱我对文件所做的更改吗?

1 个答案:

答案 0 :(得分:64)

第一个区别是revert可以在工作副本的子集上工作,而更新适用于整个工作副本。另一个区别在于当你想要回到最后一个提交的版本以外的版本时会发生什么。

如果我们有修订(提交上限,小写是工作副本中的更改,则父修订为C)

A-B-C-d

update -C -r B会给你

A-B-C

将您的工作副本设置为B,任何更改都将导致从B分支(父级修订设置为B)

A-B-C
  \e

revert -r B会给你

A-B-C-b'

其中b'是一组更改,它们撤消中间提交的更改中的所有内容,在这种情况下,它会撤消所有C中的任何更改。现在只需加入b'集合(父级修订在C处保持不变)