为什么git pull
会提取所有内容,包括新创建的远程分支,但git pull origin master
却没有?
我正在使用git version 2.9.3.windows.2
。
答案 0 :(得分:4)
如果未指定分支,则使用默认设置。默认方法是获取和更新远程存储库中存在的所有分支。
有关详细信息,请参阅文档:
git pull [options] [<repository> [<refspec>…]]
<refspec>
指定要获取的引用和要更新的本地引用。如果命令行中没有出现<refspec>
,则会从remote.<repository>.fetch
个变量中读取要获取的引用(请参阅git-fetch [1])。
参考文献解释:
您经常通过定期重复从中获取相同的远程存储库。为了跟踪这种远程存储库的进度,git fetch允许您配置
remote.<repository>.fetch
配置变量。通常这样的变量可能如下所示:
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/*
上面的示例将获取
origin
中存在的所有分支(即与值的左侧匹配的任何ref,refs/heads/*
)并更新相应的远程跟踪分支。refs/remotes/origin/*
层次结构。
该行为是默认行为,因为它允许您一次同步整个存储库。如果您不想一次更新所有本地分支,请使用git fetch
同步存储库和git merge origin/<branch>
以更新每个本地分支。
答案 1 :(得分:1)
它非常简单
当你说git pull
时,无论挂钩和过滤器都被添加到你的本地,一切都是如此。简而言之,您从遥控器获取所有内容并更新.git
文件夹。你可以去文件夹.git/logs/refs/remotes/origin/
你会在你当地看到你所拥有的所有分支。
所以,现在我从我的cmd键入了git pull
。
幕后发生的事情与您所拥有的当地分支机构无关。它连接起源并从那里到达当地。
但是,当我输入git pull origin master
时。在这里你从原点给出一个路径规范,你需要一个最新的主分支头。然后只有master brach被拉出并刷新,因为它在远程
所以,origin master
是他们用路径的git语言调用的路径规范。
答案 2 :(得分:1)
在Layman语言中,git pull
从您的遥控器中提取所有内容(所有新分支并更新旧分支),默认情况下,它将对origin
执行此操作。如果您有其他类似upstream
的遥控器,则必须指定类似git pull upstream
的遥控器,它将从上游更新所有内容。