git clone
本地分支默认与远程同名分支建立追踪关系。git clone
会克隆一个版本库到本地。使用-b <name>
或--branch <name>
参数,它不会将新创建的HEAD
指向克隆仓库的HEAD
指向的分支(master
分支),而是指向name
分支。例如下面命令是拉取远程仓库的develop
分支。
$ git clone -b develop git@git.csdn.com:benben/2015test.git
拉取到本地后,通过git branch -a
可以看到,当前分支是develop
分支。
* develop
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
git fetch
会下载你远程仓库的对象和分支,例如$ git fetch origin
会从远程refs/heads/
命名空间中拷贝所有的分支,并将其拷贝到本地的refs/remotes/origin/
命名空间。
上面的例子是你已经关联了一个远程仓库,但是比如你第一次没有使用git clone
来克隆一个远程仓库时,使用git fetch <repository>
命令下载repository
的内容。
$ git fetch git@git.csdn.com:benben/2015test.git
第一次执行这条命令时,如果报这样的错误:
fatal: Not a git repository (or any of the parent directories): .git
那是因为你还没有初始化本地的仓库,所以需要先使用git init
命令进行初始化。
在git fetch
执行成功后,如果你打开目录。没有发现远程仓库中的文件,那么可能的原因是你还没有切换到本地的分支上。利用git checkout <branch>
,即可切换到本地的branch
分支上。这时就可以看到和远程仓库branch
分支上一样的内容。
默认情况下,git fetch
下载的分支和远程的分支名相同。如果你希望download
后本地的分支和远程不一样,那么可以使用下面类似的命令:
$ git fetch git@git.csdn.com:benben/2015test.git master:localmaster develop:localdevelop
执行后会看到:
remote: Enumerating objects: 12422, done.
remote: Counting objects: 100% (12422/12422), done.
remote: Compressing objects: 100% (7917/7917), done.
remote: Total 12422 (delta 4099), reused 12389 (delta 4073)
Receiving objects: 100% (12422/12422), 20.87 MiB | 1.16 MiB/s, done.
Resolving deltas: 100% (4099/4099), done.
From git@git.csdn.com:benben/2015test.git
* [new branch] master -> localmaster
* [new branch] develop -> localdevelop
* [new tag] V1.0.0 -> V1.0.0
git pull
git pull
命令相当于git fetch
+ git merge
命令。git fetch
用于获取远程某个仓库的某个分支,然后git merge
会将拉取的分支与本地分支进行合并。
如果你想拉取远程仓库的某个分支,那么使用git pull <repository> <branch>
命令。例如下面的命令会拉取远程develop
分支到本地。
$ git pull git@git.csdn.com:benben/2015test.git develop
remote: Enumerating objects: 12396, done.
remote: Counting objects: 100% (12396/12396), done.
remote: Compressing objects: 100% (7897/7897), done.
remote: Total 12396 (delta 4096), reused 12359 (delta 4067)
Receiving objects: 100% (12396/12396), 20.87 MiB | 1.35 MiB/s, done.
Resolving deltas: 100% (4096/4096), done.
From git@git.csdn.com:benben/2015test.git
* branch develop -> FETCH_HEAD
Checking out files: 100% (14904/14904), done.
使用git log FETCH_HEAD
可以看到该分支的提交记录,但是当前本地分支还在master
分支上,你还需要创建一个新的分支,然后将这两者关联起来。