一、推送分支修改到远程仓库
1、当你从远程克隆时,实际Git自动把本地master分支和远程master分支对应起来了,远程仓库默认名称origin
2、查看远程库信息
git remote 或者 git remote -v
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/2600e97d-d618-4bdc-b473-45c01c25d3c7.png)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/7fe1527c-23a8-4574-8168-e1fe9fc5c1d2.png)
3、推送修改:git push origin master/git push origin dev
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/48c8a450-8c18-4fc5-9b3a-b31dc83200b2.png)
4、但是并不一定所有分支都要推送到远程库(总之看你的心情):
【1】master分支是主分支,需要同步
【2】dev分支是开发分支,所有成员在上面工作,需要同步
【3】bug分支只用于本地修改bug,不同步
【4】feature分支是否推送到远程,取决于你和你的小伙伴是否一起在上面开发
二、抓取分支
1、现在,模拟一个你的小伙伴,可以在另一台电脑上(注意把SSH key加到github),或者同一个电脑的另外一个目录下克隆
2、当你的小伙伴远程克隆的时候,Git_6里面只能看到master分支,不信可以用git branch命令看
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/a60766de-1549-4bac-a3a5-0a7671fb351a.png)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/5c4b1025-d260-4fc5-bfc8-3a5805887820.png)
3、现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,使用:
git checkout -b dev origin/dev
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/fdf620b3-2387-4571-a37f-d24513714ed0.png)
4、再git branch,就能看到dev分支了,现在,你的小伙伴就可以在dev分支上开发,并推送远程库了
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/9d1faaf4-b6e0-4aea-bbb7-7a7bb552f4ad.png)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/0b0ae8dd-a0aa-4b84-b5e3-849fc84a9441.jpg)
5、你的小伙伴推送后,恰巧此时你又修改了test.txt这个文件,再提交推送,则会报错。因为你们两者有冲突,Git也提示我们,你需要
git pull把最新分支从origin/dev上拉取下来(拉取失败的话看下面附录)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/978f5167-2385-4fe2-8dd9-16fca62f0546.png)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/b387214e-f258-47d2-add2-8b5cf7afc878.png)
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/e87a64ee-194c-4994-9dfa-2f4ceb35da17.png)
6、修改冲突后提交
![](https://note.wiz.cn/api/document/files/unzip/0a7eafd0-7f2d-4fb4-9f8e-5e465a5dc1d4/d3678197-3279-4f91-b068-6c2fb1eefadd.8080/index_files/862a4009-5867-484c-be7f-a89e8db97eed.png)
总结:
因此,多人协作的工作模式通常是这样:
-
首先,可以试图用
git push origin branch-name
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin branch-name
推送就能成功!
如果git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。