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

Mat*_*kin 8 git github git-fetch

帮助网络分叉项目中的上游拉入更改中,它指出:

一段时间过去了,上游仓库发生了变化,你想在提交新补丁之前更新你的分支.有两种方法可以做到这一点:

$ git fetch upstream master

$ git merge upstream/master
Run Code Online (Sandbox Code Playgroud)

为什么它们包含master在fetch命令中?我查看了这些git help fetch信息,但我不了解包含的内容master.谢谢.

Von*_*onC 6

这允许您:

  • 仅更新主上游分支的本地版本(而不是更新上游仓库的所有分支,这可能会更长)
  • 没有触发合并的时候了(而不是在拉命令)

然后,git merge它将尝试将上游主服务器的本地版本合并到您的repo主分支.

所以在这里,对于fetch命令,master是refspec.

<refspec>
Run Code Online (Sandbox Code Playgroud)

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

<src>获取匹配的远程引用,如果<dst>不是空字符串,则使用匹配快速转发与其匹配的本地引用<src>.
如果使用可选加+号,则即使不导致快进更新,也会更新本地引用.

这里<dst>是空的,因此匹配的本地分支(您的主)更新.


没有主人,那会给:

git fetch upstream 
Run Code Online (Sandbox Code Playgroud)

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