为什么在命令 `git fetch upstream master` 中要包含 `master`?

8
help.github的分叉项目中的拉取上游更改部分中指出:

一段时间过去了,上游存储库已更改,您想在提交新补丁之前更新您的分支。 有两种方法可以做到这一点:

$ git fetch upstream master

$ git merge upstream/master

为什么在fetch命令中包含master?我已经查看了git help fetch的信息,但是我不明白包含master的作用是什么。谢谢。

1个回答

6

这样可以让您:

  • 只更新主远程分支的本地版本 (而不是更新所有远程repo的分支,这可能需要更长时间)
  • 不会立即触发合并 (与pull命令相反)

然后,git merge将尝试将该远程主分支的本地版本合并到您的repo主分支。

因此,在fetch命令中,master是一个refspec。

<refspec>

<refspec>参数的格式是可选的加号+, 后跟源引用<src>, 冒号:后跟目标引用<dst>

匹配<src>的远程引用将被获取,如果<dst>不为空字符串,则使用<src>快进匹配它的本地引用。
如果使用了可选的加号+,即使它不会导致快进更新,也会更新本地引用。

在这里,<dst>为空,因此匹配的本地分支(您的主分支)将被更新。


如果没有主分支,那么结果将如下所示:

git fetch upstream 

上述命令将从远程refs/heads/命名空间复制所有分支,并将它们存储到本地refs/remotes/upstream/命名空间,除非使用branch.<name>.fetch选项指定了非默认的refspec。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接