1. 查看分支
当从远程仓库克隆时,Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称时origin。
要是看远程仓库的信息,用
$ git remote -v
-v
参数显示更详细的信息。
2. 推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程仓库对应的远程分支上:
$ git push origin master
$ git push origin dev
master
和dev
为指定的分支。一般情况下,和其他人有协作开发的分支需要推送远程仓库,某些自己定义的分支可以不用推送。
说明:即使远程仓库当前没有dev分支,按照这样的方式推送会自动创建dev分支。
3. 抓取分支
默认情况下,其他人从远程库clone时,只能看到本地的master分支。
git clone git@gitee.com:xie_xuchun/we-are-study.git
如果你们要在dev分支上合作开发,就需要先建立dev分支的关系。
$ git checkout -b dev origin/dev
现在,其他人就可以在dev分支上修改,然后进行提交等等操作,进行协作开发了。
如果远程仓库的代码比本地代码更新,这时候git push
会产生冲突,从而导致推送失败,这时需要先git pull
,在本地解决完冲突之后再推送。
如果在git pull
的过程中有报错
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> dev
原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
$ git branch --set-upstream-to=origin/dev dev
4. 小结
多人协作的工作模式通常是这样
首先,可以试图用git push origin <branch-name>
推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull
试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>
推送就能成功!
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
这就是多人协作的工作模式。