代码之家  ›  专栏  ›  技术社区  ›  Edan Maor

Mercurial中Revert和Update的区别

  •  52
  • Edan Maor  · 技术社区  · 15 年前

    我刚开始接触Mercurial,我遇到了一些我不明白的事情。

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

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

    在我链接到的页面中,有以下语句:

    但是,此操作不会改变 工作表的父版本 未提交的合并)。撤消 未提交的合并,可以使用“hg 父对象到第一个父对象。

    我不明白两者的区别( hg revert 与。 hg update -C -r

    1 回复  |  直到 7 年前
        1
  •  65
  •   jk.    12 年前

    第一个区别是revert可以处理工作副本的一个子集,而update可以处理整个工作副本。另一个区别在于,当您想返回到上一个提交的版本以外的版本时,会发生什么。

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

    A-B-C-d
    

    update -C -r B 会给你

    A-B-C
    

    A-B-C
      \e
    

    revert -r B

    A-B-C-b'
    

    其中b'是一组更改,它撤消中间提交的更改中的所有更改,在本例中,它撤消所有C。现在任何更改都只需加入b'集合(父版本保持C不变)