我在git存储库中有两个分支master
和mybranch
。
在添加第二个分支之前从git存储库克隆的本地文件夹中,我只能按预期看到第一个分支:
xxx$ git branch
* master
试图获取另一个分支我试过
xxx$git branch --track mybranch
返回
Branch origin/mybranch set up to track local branch master
这不是我想要的,因为根据我的理解,我的本地分支mybranch
与master
相同(对吗?)。
所以我有两个问题:
如何删除此本地分支?
如何真正获取远程分支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>
但如果我检查我的远程分支,则master
和mybranch
都存在:
$ 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
的提交号相同的提交号?
答案 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
的输出,以了解您的分支机构: