3

我有两个分支,mastermybranch一个 git 存储库中。在添加第二个分支之前从 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 中(我克隆了存储库,创建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's 相同的提交号?

4

1 回答 1

2

我想你实际上可能做到了

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

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

如果不签出新分支对您很重要,您可以这样做

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以了解您的分支:

于 2013-06-28T05:51:57.660 回答