有时git clone
下来会出现很多branch
,更麻烦的是如果主分支没代码那你就只能看到.git
目录了。如下面的这个:
$ git clone git://gitorious.org/android-eeepc/mesa.git
发现本地就只有一个
.git
目录,那么这个时候就需要checkout
了。
进入你的本地目录,如这个是mesa
,利用
$ git branch –r
查看
branch
信息(当然你也可以用git show-branch
查看,不过有时并不好用),获得如下branch
信息:
origin/android
origin/mesa-es
origin/mesa-es-dri
此时我们需要的是
android
分支的代码,那么此时就要进行checkout
了。
$ git checkout origin/android
你再看你的目录
mesa
下是不是有了代码了?其它的branch
同理。
git clone
默认会把远程仓库整个给clone
下来
但只会在本地默认创建一个master
分支
如果远程还有其他的分支,此时用git branch -a
查看所有分支:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/python_mail.skin
remotes/origin/udisk
remotes/origin/vip
能看到远程的所有的分支,如remotes/origin/python_mail.skin
可以使用checkout
命令来把远程分支取到本地,并自动建立tracking
$ git checkout -b python_mail.skin origin/python_mail.skin
Branch python_mail.skin set up to track remote branch python_mail.skin from origin.
Switched to a new branch 'python_mail.skin'
或者使用-t
参数,它默认会在本地建立一个和远程分支名字一样的分支
$ git checkout -t origin/python_mail.skin
也可以使用fetch
来做:
$ git fetch origin python_mail.skin:python_mail.skin
不过通过fetch
命令来建立的本地分支不是一个track branch
,而且成功后不会自动切换到该分支上
注意:不要在本地采用如下方法:
$ git branch python_mail.skin
$ git checkout python_mail.skin
$ git pull origin python_mail.skin:python_mail.skin
因为,这样建立的branch
是以master
为基础建立的,再pull
下来的话,会和master
的内容进行合并,有可能会发生冲突。