我有一个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中进行一个fetch操作:
$ 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
我将以下行添加到我的配置文件中:
[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
相同的提交号码?
git checkout mybranch
,但出现了以下错误:error: Your local changes to the following files would be overwritten by checkout: <list of files>
。我只想获取该分支,而不想更改当前分支(master)。这是否可能? - julmybranch
分支,然后让它跟踪远程mybranch
分支,对吗?没有办法让 Git 获取所有远程分支的数据吗?无论如何,我尝试了git branch --set-upstream mybranch origin/mybranch
(我正在使用 Git 1.7,因此不存在 -u 选项),然后执行了git fetch
,但是本地的mybranch
分支似乎仍与远程分支不同:我尝试了git diff master..mybranch
,但它没有显示任何差异。 - julmybranch
在本地存在,为什么使用git branch
命令无法看到它,而需要使用git branch mybranch
来创建它呢? - julorigin/mybranch
可以通过git branch -r
命令查看。您不允许直接修改远程分支。远程分支应该包含远程存储库内容的副本。您可以创建本地分支进行本地更改,然后将这些更改推送到远程存储库,相同的更改会被复制到您自己的远程分支。这是一个很好的解释:http://www.gitguys.com/topics/tracking-branches-and-remote-tracking-branches/ - Klas Mellbourn