2016-11-22 187 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語言路徑規定的路徑規格。