2011-08-03 77 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”。它会自动删除! :-( –