git分支协作

创建本地分支

用户A在本地基于master分支检出dev分支:

$ git checkout -b dev 

然后将该dev分支推送到远程仓库:

$ git push origin dev

这时远程仓库就有了两个分支。

克隆并检出dev分支

用户B首先克隆远程仓库:

$ git clone git@gitserver:/path/to/yourProject.git

此时用户B本地只有master分支,因为远程仓库的当前分支(HEAD指向)为master分支:

$ git branch
* master

但是git clone操作实际上已经将远程仓库的所有分支的相关信息取到本地,可用以下命令查看:

$ git branch -r
 origin/HEAD -> origin/master
 origin/dev
 origin/master

可以看出,远程仓库有两个分支,且当前活动分支为master分支。此时,用户B可以检出该dev分支:

$ git checkout -b dev origin/dev

也可以用--track选项简化该命令:

$ git checkout --track origin/dev

这样的话,新检出的本地分支将与远程分支同名。

注意

  • 从远程分支检出的本地分支,自动成为跟踪分支
  • 将远程仓库并不存在的本地分支推送到远程,并不会自动建立跟踪关系(上述的用户A,其dev分支和远程的dev分支没有跟踪关系
  • git branch --set-upstream <local_branch> origin/<branch>用于建立本地分支和远程分支的跟踪关系
  • 跟踪分支是一种和某个远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样,在这些分支里运行git pull会获取所有远程索引,并把它们的数据都合并到本地分支中来。

Published: October 30 2014

blog comments powered by Disqus