目录
0.前言背景
1.开发者1☞完成准备工作&协作开发
1.1查看分支情况
1.2创建本地分支feature-1
1.3三板斧
1.4push推本地分支feature-1到远程仓库
2.开发者2☞完成准备工作&协作开发
2.1创建本地分支feature-2
2.2三板斧
2.2push推送本地feature-2到远程仓库
3.出现同一分支下多人协作开发问题
3.1查看分支情况
3.2拉取远程feature-2分支
3.3创建本地feature-2分支并且和远程建立联系
3.4三板斧
3.5回到不同分支多人协作开发问题
4.将内容合并进master分支
4.1无冲突演示feature2
4.2存在冲突演示feature1
4.2.1拉取pull最新master版本
4.2.2feature合并master
4.2.3push推送至远程仓库
4.2.4远程仓库提交PR:master合并feature1
5.删除无用分支feature-1或者feature-2
6.总结模式
0.前言背景
不同分支去实现不同的function
可以是不同开发者实现不同的function使用不同的分支。
可以是不同开发者实现不同的function使用不同的分支。
可以是同一份文件,也可以是不同文件。
❗重点是:不同分支针对是不同的function
- 目标:远程master分支下新增function1和function2文件。
- 实现:由开发者1新增function1,由开发者2新增function2。
- 条件:在不同分支下协作完成,各自让某一个功能私有某一个分支。
- 重点:在公司里面,都是一个功能function 对应一个分支这样子来玩的。push不会出现冲突问题。
- 同一分支下多人协作开发场景:push会出现冲突问题。
1.开发者1☞完成准备工作&协作开发
1.1查看分支情况
git branch -a
查看分支情况(远程分支/本地分支,远程分支是远程分支,本地分支是本地分支)
1.2创建本地分支feature-1
- 无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
- 在本地创建的feature的时候必须确保基于本地master分支创建的feature-1分支中的master分支相较于远程分支master分支是最新一次提交记录的版本。
- 好习惯:git checkout master git pull
- git checkout -b feature-1:创建本地分支feature-1
1.3三板斧
vim function1
git add function1
git commit -m "add func1"
git push origin feature-1
1.4push推本地分支feature-1到远程仓库
git push origin feature-1
注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了
2.开发者2☞完成准备工作&协作开发
2.1创建本地分支feature-2
- 无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
- 在本地创建的feature的时候必须确保基于本地master分支创建的feature-1分支中的master分支相较于远程分支master分支是最新一次提交记录的版本。
- 好习惯:git checkout master git pull
- git checkout -b feature-2:创建本地分支feature-2
【Windows下不用命令直接操作也可】
2.2三板斧
git add function2
git commit -m "add func2"
git push origin feature-2
2.2push推送本地feature-2到远程仓库
git push origin feature-2
- 注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了
- 发现不同开发者正在协作开发的过程中,并没有解决冲突。是同一份文件的功能开发push推送也不会有冲突
- 因为是在不同的分支下开发,各自私有的分支,所以不会有冲突。
3.出现同一分支下多人协作开发问题
正常情况下,你俩就可以在⾃⼰的分⽀上进⾏专业的开发了!
但天有不测⻛云,你的⼩伙伴突然⽣病了,但需求还没开发完,需要你帮他继续开发,于是他便把feature-2 分⽀名告诉你了。这时你就需要在⾃⼰的机器上切换到 feature-2 分⽀帮忙继续开发,要做的操作如下:
- pull拉取远程仓库的feature-2分支到开发者1本地服务器上
- 建立联系
- 开发然后push推送
3.1查看分支情况
git branch -a
查看分支情况(远程分支/本地分支,远程分支是远程分支,本地分支是本地分支)
3.2拉取远程feature-2分支
git pull :这里短pull是拉取远程仓库的内容。(而非分支下的内容)
3.3创建本地feature-2分支并且和远程建立联系
git checkout -b dev origin/dev:在创建dev分支的时,切换到了本地dev分支下,同时将本地dev分支和远程的dev分支建立了一个连接。
3.4三板斧
vim function2
git add function2
git commit -m "add func2"
git push origin feature-2
3.5回到不同分支多人协作开发问题
此刻开发者1开发完function-2的1/3内容了,他的亲亲同事病好了。他准备在他的电脑上继续开发。此刻同事电脑上,并没有开发者1开发的内容。所以他需要先拉取pull远程仓库的内容,再继续开发。
- 建立远程feature-2分支和本地feature-2分支的联系
- 拉取远程仓库feature-2的内容
- 继续开发☞完成开发
- push推送至远程仓库(已经建立本地和远程的联系☞直接短命令push直接即可)(这里的短命令push就是推送分支底下的内容)
4.将内容合并进master分支
- function1和function2二者功能都完成了开发操作,现在需要都merge都master分支上去
- 解决方案:提交PR申请单
- 开发人员:PR☞申请单☞审查员:审核(老板、项目经理、技术经理)☞merge
- 存在两种情况
【1】开发分支feature直接和主分支master最新一次提交版本merge合并。(没有合并冲突)----演示feature-2
开发分支feature直接和主分支master最新一次提交版本merge合并存存冲突。--------演示feature-1
开发分支feature直接和主分支master最新一次提交版本merge合并存存冲突。
- 若master合并feature,存在冲突,则在master上去解决的。(可能出现更大bug问题
- 若feature合并master分支,存在冲突,在feature上解决的。再让master合并feature
- 注意:本地merge合并一定要pull拉取远程仓库最新的一次提交的版本的master分支
【2】本地☞远程
- 本地服务器操作:在本地仓库切换至feature-1 mereg合并 本地master分支,存在冲突,手动解决冲突,三板斧提交并且推送push。
- 远程服务器操作:在远程仓库master主分支 merge合并feature-1分支
【3】或者全在本地——前面博文演示过
- 在本地仓库切换至feature-1 mereg合并 本地master分支,存在冲突,手动解决冲突,三板斧提交
- 切换至本地master分支合并
- 最后push推送至远程仓库
4.1无冲突演示feature2
4.2存在冲突演示feature1
4.2.1拉取pull最新master版本
git checkout master
git pull:这里的短命令push就是推送分支底下的内容
4.2.2feature合并master
git checkout feature-1
git merge master
下面页面表示merge的两个分支,没有任何的冲突。Ctrl+x自动退出了
4.2.3push推送至远程仓库
git push origin feature-1
注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了
4.2.4远程仓库提交PR:master合并feature1
5.删除无用分支feature-1或者feature-2
6.总结模式
总结:
- 每个开发者都私有一个分支去开发各自的功能。(同一文件/不同文件)
- 开发完成之后(三板斧)push,基本不会出现冲突。
- 会出现小插曲(同事生病等)。
- 完成之后需要将开发分支部分合并到master。三个方案☞建议选择:远程和本地混合。