Mercurial中的还原与更新的区别

我刚开始使用Mercurial,而且遇到了一些我不明白的地方。

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

据我所知,我想要的命令是恢复 。

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

但是,此操作不会更改工作目录的父版本(或者在未提交合并的情况下修订版本)。 要撤销未合并的合并,可以使用“hg update -C -r”。 这将把父母重置为第一父母。

我不明白这两者之间的区别( hg revert vs. hg update -C -r )。 任何人都可以启发我的差异? 在我的情况下,我真的想要还原或更新去摆脱我对文件的变化?

谢谢

第一个区别是恢复可以在工作副本的一个子集上工作,而更新在整个工作副本上工作。 另一个区别是当你想回到最后提交的版本以外的版本。

如果我们有修改(上限是承诺,小写是在工作副本的变化,父母的修改是C)

 ABCd 

update -C -r B会给你

 ABC 

将工作副本设置为B,任何更改都会导致从B分支(父版本设置为B)

 ABC \e 

revert -r B会给你

 ABCb' 

其中b'是一组解除中间提交更改中的所有内容的变更,在这种情况下,它将取消C中的所有更改。现在,只需joinb'set(父C不变)