8

Help.github 的 Forking a project的Pulling in upstream changes部分中,它指出:

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

$ git fetch upstream master

$ git merge upstream/master

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

4

1 回答 1

6

这使您可以:

  • 仅更新主上游分支的本地版本(而不是更新上游存储库的所有分支,这可能需要更长的时间)
  • 不立即触发合并(与 pull 命令相反)

然后git merge将尝试将该本地版本的上游 master 合并到您的 repo master 分支。

所以在这里,对于fetch命令,master 是一个 refspec。

<refspec>

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

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

这里,<dst>是空的,所以匹配的本地分支(你的主分支)被更新。


如果没有主人,那将给出:

git fetch upstream 

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

于 2010-01-06T16:47:51.413 回答