2016-11-22 74 views
0

为什么git pull会提取包括新创建的远程分支在内的所有内容,但git pull origin master不会?我正在使用git version 2.9.3.windows.2'git pull'的默认行为

回答

3

当您不指定分支时,将使用默认设置。默认意味着获取并更新全部分支存在于远程存储库中。

详细信息请参考文档:

git pull [options] [<repository> [<refspec>…​]] 

<refspec>指定哪个裁判来获取和更新其本地裁判。如果在命令行上没有出现<refspec>,取而代之的是从remote.<repository>.fetch变量读取(请参阅git-fetch [1])。

来源:https://git-scm.com/docs/git-pull

引用的文档解释:

你经常通过定期和重复地从它的读取与相同的远程存储库交互。为了跟踪这样一个远程仓库的进度,git fetch允许你配置remote.<repository>.fetch配置变量。

典型地,这样一个可变可能看起来像这样:

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 

上面的例子将获取存在于origin(即refs/heads/*匹配的值的左手侧,即,任何参考文献)中的所有分支和更新refs/remotes/origin/*层次结构中的相应远程跟踪分支。

来源:https://git-scm.com/docs/git-fetch#CRTB

行为是默认的,因为它可以让你整个仓库在一次同步。如果您不想一次更新所有本地分支,请使用git fetch同步存储库,并使用git merge origin/<branch>更新每个本地分支。

+0

你能用外行语言来解释吗? – Thaadikkaaran

+0

@JaganathanBantheswaran我试过了。请立即检查。另请注意,我正在回答_why_问题。如果您还有其他问题(_不能检查标题中的远程分支),请将实际的命令和错误消息粘贴到您的问题中。 – Melebius

1

它当你说不管任何挂钩git pull一切,过滤器被添加到您当地是非常简单的

。总之,您可以从远程获取所有内容并更新.git文件夹。你可以去文件夹.git/logs/refs/remotes/origin/ 你会看到你在本地的所有分支。

所以,现在我从我的cmd键入git pull

幕布背后发生的事情与您当地的分支无关。它把原点连接起来,并从那里获得每一个到你的本地。

但是,当我输入git pull origin master。在这里你给出了一个源头的路径规范,你需要一个最新的主分支。然后只有主人brach得到拉动和刷新,因为它是在远程

因此,origin master是他们在git语言路径规定的路径规格。