mercurial命令pull之间的差异-b<;branchname>;vs pull-r<;branchname>;

mercurial命令pull之间的差异-b<;branchname>;vs pull-r<;branchname>;,mercurial,Mercurial,以下mercurial命令之间有什么区别 pull-bvspull-r 我搜索了很多,但结果好坏参半,没有一个是清楚的 有谁能解释一下两者之间的区别以及一个人应该在另一个人之上使用另一个人的情况吗?这是: pull -b <branchname> 但是,如果这也是变更集的标识哈希,则此命令现在有点不明确: hg pull -r 21e34fb985bb 您是指具有该名称的分支还是具有该哈希的变更集 使用-b使用分支,另一个分支不确定 这有关系吗?很可能不会,如果会的话,我会敦促您

以下mercurial命令之间有什么区别

pull-b
vs
pull-r

我搜索了很多,但结果好坏参半,没有一个是清楚的

有谁能解释一下两者之间的区别以及一个人应该在另一个人之上使用另一个人的情况吗?

这是:

pull -b <branchname>
但是,如果这也是变更集的标识哈希,则此命令现在有点不明确:

hg pull -r 21e34fb985bb
您是指具有该名称的分支还是具有该哈希的变更集

使用
-b
使用分支,另一个分支不确定

这有关系吗?很可能不会,如果会的话,我会敦促您为分支选择不同的命名约定。

hg pull--branchname
中,
branchname
指的是名为
branchname
的分支

hg pull--rev branchname
中,
branchname
被解释为一个修订版,它指的是远程repo中分支
branchname
的最新标题。这在以下文件中提到:

分支名称可以在标记名称可以使用的任何位置使用,包括日志、, 差、推、拉。当一个分支有多个头时,tipmost 将找到分支的修订版本

如果分支
branchname
在远程repo中有多个头,则这两个命令可能会产生不同的结果

考虑以下场景:

o  f
|
o  e
|
| o  d
| |
| o  c
|/
o  b          o  b
|             |
o  a          o  a

remote        local
假设变更集
a
b
c
d
e
f
都在分支
默认值中

如果您
hg pull--rev default
default
被解释为一个修订版本,它指的是远程回购中分支机构的最新负责人
default
;在两个head版本
d
f
中,最新的版本是
f
(它可能比
d
最近被推入远程repo),因此您的命令将相当于
hg pull--rev f
。这将纳入您的回购协议修订版
f
及其所有前身,即修订版
a
b
e
f
。由于修订版
a
b
已经在您的本地回购中,实际上您将拉取
e
f

另一方面,
hg pull——分支机构默认
将分支机构默认
中的所有修订纳入回购协议,即
a
b
c
d
e
f
。由于
a
b
已经在您的回购中,实际上您将拉取
c
d
e
f

TL;博士
总之,可以说,
hg pull--branchname
将远程repo中所有分支
branchname
的负责人(加上他们的所有祖先变更集,减去本地repo中已有的变更集)拉入本地repo,wheras
hg pull--rev branchname
仅在远程repo中拉取分支的最新头
branchname
(加上其所有祖先变更集,减去本地repo中已有的变更集)。因此,如果您使用的是标准的每个命名分支的单头工作流,则最新的头将始终是唯一的头,因此,就您而言,这两个命令是等效的。

这对您所在的分支有区别吗?
hg pull -r 21e34fb985bb
o  f
|
o  e
|
| o  d
| |
| o  c
|/
o  b          o  b
|             |
o  a          o  a

remote        local