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

时间:2010-01-06 16:41:46

标签: git github git-fetch

help.github's Forking a project上的引入上游更改部分,它声明:

  

一段时间过去了,上游回购已更改,您希望在提交新修补程序之前更新fork。有两种方法可以做到这一点:

$ git fetch upstream master

$ git merge upstream/master

为什么在fetch命令中包含master?我查看了git help fetch信息,但我不理解包含master的内容。感谢。

1 个答案:

答案 0 :(得分:6)

这可以让你:

  • 仅更新主上游分支的本地版本(而不是更新上游仓库的所有分支,这可能会更长)
  • 没有立即触发合并 (与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。 / p>