2011-08-03 75 views
6

我想弄清楚如果我在當前分支中執行git fetch將提取哪些分支,以及如何更改該分支(通過git remote的一些變體或編輯.git/config文件)。如何找到當前分支跟蹤什麼分支

從什麼遠程分支git pull取內容? git fetch提取內容是否一樣?有沒有可以告訴我所有這些信息的git命令?

回答

7

要建立跟蹤遠程分支的本地分支使用

git branch --set-upstream <local_branch> <remote_branch> 

所以,如果你希望你的本地master跟蹤origin/master,類型

git branch --set-upstream master origin/master 

然而,git fetch獲取的所有分支配置的遙控器。

如果有多個遙控器(例如originother和),

git fetch other 

將獲取遠程other

git fetch origin 

將獲取origin

要找出遠程分支正在跟蹤,開放.git/config和搜索條目像

[branch "mybranch"] 
    remote = <remote_name> 
    merge = <remote_branch> 

這告訴你,你的本地分支mybranch具有<remote_name>爲配置的遠程,它跟蹤的<remote_name><remote_branch>

哪些分支從遠程獲取以及它們是如何叫你的本地倉庫中的.git/config以下部分定義:

[remote "origin"] 
    fetch=+refs/heads/*:refs/remotes/origin/* 
    url=<url_of_origin> 

這告訴你,你的起源refs/heads下存儲的分支可以取並在您當地的倉庫中儲存在refs/remotes/origin/下。

如果您使用的是mybranchgit fetch,則會提取<remote_name>(在[remote <remote_name>]部分中指定)的修訂版本。如果您輸入git pull,則在取得<remote_name>的修訂後,<remote_name>的分支<remote_branch>將合併爲mybranch

有關其他信息,請參見手冊頁git branchgit fetchgit pull

+0

我一直在尋找關於遠程分支的信息,而你最後一段(建議看看.git/config)非常有幫助。你知道什麼 [remote「origin」] fetch = + refs/heads/*:refs/remotes/origin/* mean(在我的.git/config中)? 'git fetch'是否將形式origin/refs/heads/xyz的所有分支帶入本地遠程跟蹤分支refs/remotes/origin/xyz?這是否發生在所有xyz或只有當前分支(在哪個'git fetch'發出)? –

+0

這太好了。一個小小的編輯:如果你在'mybranch'上並輸入'git fetch',那麼'[] section_中指定的''_的修訂版本將被提取。我認爲這是正確的,對嗎? –

+0

由於某種原因,我不能說「@ eckes」。它會自動刪除! :-( –