代码之家  ›  专栏  ›  技术社区  ›  f0b0s

mercurial update和backout的区别

  •  5
  • f0b0s  · 技术社区  · 15 年前

    这两个命令的区别是什么(我想回滚到修订版1):

    hg update -r 1
    hg backout -r 1 --merge
    

    (在示例中,提示修订为3)

    1 回复  |  直到 15 年前
        1
  •  11
  •   brendan    15 年前

    首先,update-r 1将撤消工作目录中的修订2和修订3,而backout-r 1——merge将撤消修订1,同时保留修订2和修订3。但有一个更根本的区别:

    update 在您的工作目录中签出一个旧版本,而backout创建一个新版本(但通常在上面的合并之后提交)。试运行 glog 在查看每个修订图之后:

    之前:

    0 - 1 - 2 - @3
    

    回复后:

    0 - @1 - 2 - 3
    

    退出后--合并;提交

    0 - 1 - 2 - 3 - @5
         \- 4 - - - /
    

    因为REVERT只影响工作目录,所以克隆存储库的任何用户都看不到它。它们将在还原前后的3点结束。而在退出之后,它们将以5结尾,而这没有1所做的更改。