Mercurial更新和退出之间的区别

f0b*_*b0s 5 mercurial

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

hg update -r 1
hg backout -r 1 --merge
Run Code Online (Sandbox Code Playgroud)

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

bre*_*dan 11

首先,更新-r 1将撤消工作目录中的修订版本2和3,而退出-r 1 --merge将撤消修订版本1,同时保留修订版本2和3.但是有一个更基本的区别:

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

之前:

0 - 1 - 2 - @3
Run Code Online (Sandbox Code Playgroud)

恢复后:

0 - @1 - 2 - 3
Run Code Online (Sandbox Code Playgroud)

退出后 - 支持; 承诺

0 - 1 - 2 - 3 - @5
     \- 4 - - - /
Run Code Online (Sandbox Code Playgroud)

由于revert仅影响工作目录,因此对于克隆存储库的任何用户都不可见.它们将在恢复之前和之后结束.在退出之后,它们将最终为5,而没有1的更改.