接上篇(http://my.oschina.net/woshixiaomayi/blog/521706)继续
八、多人协作
当从远程库克隆的时候,实际上Git自动的把本地的master分支和远程的master分支对应了起来,远程库的默认名称是origin。
git remote 查看远程库的信息
git remote -v 查看远程库的详细信息
推送分支:
是把本分支上所有本地内容提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上,命令:
git push origin master
一般情况下,哪些分支需要推送呢?1,master分支是主分支,因此要时刻与远程同步。2,一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
抓取分支:
场景:自己的同事clone了远程库testgit的dev分支,进行了修改,并且已经提交。自己也对testgit的dev分支,同样的文件做出来修改,并且尝试提交。
git push origin dev 可以看到在推送到远程库的时候发生了错误,error :failed to push some refs to ‘https://……‘,原因是,不同的人推送了同样的文件,修改同一个文件的同一个地方。这就造成了冲突,解决的办法也很简单,把远程库中的文件,拉下来,在本地进行合并,解决了冲突,再推送上去即可,命令:
git pull 把远程库中的文件拉到本地来。但是还是失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据命令下的提示,设置dev和origin/dev的链接,命令:
git branch --set-upstream dev origin/dev 指定本地dev分支和远程origin/dev的链接
然后继续拉下来 git pull,下方的提示:Merge conflict in readme.txt 可见还是有冲突的。老办法,进行手工修改,完成后,推送:
git push origin dev 然后就成功了。
多人协作的工作模式:
1,可是试图用 git push origin <branch-name> 推送自己的修改
2,如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
3,如果合并冲突,这需要解决冲突,并在本地提交,再使用 git push origin <branch-name>推送。