如何跟踪远程git分支?

时间:2013-06-28 04:58:37

标签: git branch fetch

我在git存储库中有两个分支mastermybranch。 在添加第二个分支之前从git存储库克隆的本地文件夹中,我只能按预期看到第一个分支:

xxx$ git branch
* master

试图获取另一个分支我试过

xxx$git branch --track mybranch

返回

Branch origin/mybranch set up to track local branch master

这不是我想要的,因为根据我的理解,我的本地分支mybranchmaster相同(对吗?)。

所以我有两个问题:

  • 如何删除此本地分支?

  • 如何真正获取远程分支mybranch

编辑我不想结帐mybranch,我只想提取。

编辑2

在我创建分支的工作区w2中(我克隆了repos,创建了mybranch并推送它:

$ git branch -vv
  master    c417738 [origin/master] <latest commit msg>
* mybranch 0c7dbac <latest commit msg>

在初始工作区w1(我第一次推送master

$ git branch -vv
* master 66bb412 <latest commit msg>

现在,如果我在w1中进行提取:

$ git fetch

我仍然只有master

$ git branch -vv
* master 66bb412 <latest commit msg>

但如果我检查我的远程分支,则mastermybranch都存在:

$ git branch -r
  origin/master
  origin/mybranch

所以fetch没有像我预期的那样从所有分支机构获取数据......

编辑3

现在,按照Klas Mellbourn的指示,我做了:

git branch mybranch

并将这些行添加到我的conf文件中:

[branch "mybranch"]
remote = origin
merge = refs/heads/mybranch

现在检查我的分支机构:

$ git branch -vv
* master    66bb412 <latest commit msg>
  mybranch 66bb412 [origin/mybranch: ahead 3, behind 8] <latest commit msg from master (?)>

为什么为mybranch指定的提交与为master指定的提交相同?为什么它指定与master的提交号相同的提交号?

1 个答案:

答案 0 :(得分:1)

我认为你实际上可能已经

git branch --track origin/mybranch

创建了一个名为origin/mybranch的本地分支,它跟踪您当前所在的本地分支

删除该分支

git branch -d origin/mybranch

要获取远程分支,只需执行

git checkout mybranch

哪个应该返回

Branch mybranch set up to track remote branch mybranch from origin.
Switched to a new branch 'mybranch'

如果没有,你可以

git checkout -b mybranch
git branch -u origin/mybranch

(或者VonC在答案中建议的更简洁git checkout -t origin/mybranch

如果您不检查新分支很重要,可以

git branch mybranch
git branch -u origin/mybranch mybranch

如果您使用的是git 1.7(没有-u开关)而您绝对没有 想要检查跟踪分支,我不认为你可以使用命令行创建它,但你可以直接编辑配置文件

git branch mybranch
git config --local --edit

然后添加这些行

[branch "mybranch"]
    remote = origin
    merge = refs/heads/mybranch

提示:您可以研究git branch -vva的输出,以了解您的分支机构: