目录
0.前言场景
1.开发者1☞完成准备工作&协作开发
1.1创建dev分支开发
1.2拉取远程dev分支至本地
1.3查看分支情况和分支联系情况
1.4创建本地dev分支且与远程dev分支建立联系
1.5在本地dev分支上开发file.txt
1.6推送push至远程仓库
2.开发者2☞完成准备工作&协作开发
2.1创建git目录
2.2powershell页面
2.3https协议克隆远程仓库
2.4查看分支情况且创建本地分支
2.5远程dev分支和本地dev分支建立连接
2.6windows图形化界面直接开发
2.7三板斧☞推送push
3.push出现冲突
4.将内容合并进master分支
5.删除无用分支dev
6.总结模式
0.前言场景
目标:远程master分支下file.txt文件新增"aaa"、"bbb"。
实现:由开发者1新增"aaa",由开发者2新增"bbb"。
条件:在一个分支下协作完成。
【目前远程仓库的状态】
1.开发者1☞完成准备工作&协作开发
1.1创建dev分支开发
❓怎么模拟两个开发者
Linux环境下和windows环境下都去克隆远程仓库就可以模拟两个开发者。
❓开发者1和2都是基于同一分支开发的
- 肯定不是master分支(master分支是一个稳定的分支)
- 创建一个其他dev分支来开发(本地或远程都可以创建)
- 注意:无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
- 分支起点:基于哪个分支新建一个分支。
❗这里【演示在远程创建】☞然后pull拉取☞本地仓库
注意:这里创建的dev分支就是基于master最新一次提交版本来创建的。
【远程创建】
1.2拉取远程dev分支至本地
- git pull origin dev
- git pull :这里短pull是拉取远程仓库的内容。(而非分支下的内容)
1.3查看分支情况和分支联系情况
- git branch -a 在本地仓库查看本地分支和远程分支
注意:本地的修改 必须在本地的分支上去操作,由本地push推送至远程的分支,不能直接在本地切换到远程的分支下去修改。相当于直接修改远程的分支下的某些内容。
git branch -vv查看本地分支和远程分支建立连接
1.4创建本地dev分支且与远程dev分支建立联系
- 【建立联系情况1】:远程仓库存在dev分支,在本地仓库创建dev分支同时和远程仓库建立联系。
- git checkout -b dev origin/dev
在创建dev分支的时,切换到了本地dev分支下,同时将本地dev分支和远程的dev分支建立了一个连接。
1.5在本地dev分支上开发file.txt
- vim file.txt
- git add .
- git commit -m " "
1.6推送push至远程仓库
- git push
- 因为上面已经建立了连接可以使用push操作的短命令
2.开发者2☞完成准备工作&协作开发
2.1创建git目录
2.2powershell页面
2.3https协议克隆远程仓库
2.4查看分支情况且创建本地分支
2.5远程dev分支和本地dev分支建立连接
- 【建立联系情况2】:远程仓库由dev分支,本地仓库也创建了dev分支。
- git branch --set-upstream-to=origin/dev dev
2.6windows图形化界面直接开发
2.7三板斧☞推送push
3.push出现冲突
此刻出现以下情况:
- 先使用 git pull:将远程仓库的file.txt的内容拉取到到开发者2的本地仓库中(发生本地合并冲突)
- 在开发者2的本地服务端:解决冲突
- 再次提交,再次推送
4.将内容合并进master分支
- master分支是没有这两行代码的。原因是master分支没有进行merge合并dev分支操作的。(所以是没有新增内容的)
在工作中推荐使用PR申请单,因为PR需要经过审查员的审核的。审查员都是老板,项目经理对,开发代码都是有保障性质的。才能确保master分支是一个稳定的状态。
- 两种解决方案
- 远程:PR☞申请单☞审查员审核(老板、项目经理)☞merge
- 本地:在本地服务器上merge操作☞再推送至远程仓库
- 本地:merge操作
- 注意合并的master都是最新一次提交记录的版本(最新的❗)所以需要需要pull拉取远程仓库最新版本的master分支内容。master:pull
- 好习惯:切换到dev分支上先merge合并master分支,存在冲突在dev分支上解决,再次提交。dev merge master
- 切换至master分支之后再次合并dev分支。master merge dev
- 最后再push远程仓库。master:push
【master:pull】
【dev merge master】
【master merge dev】
【master:push】
5.删除无用分支dev
6.总结模式
总结⼀下,在同⼀分⽀下进⾏多⼈协作的⼯作模式通常是这样:
- 首先,可以试图⽤ git push origin branch-name 推送⾃⼰的修改;
- 如果推送失败,则因为远程分⽀⽐你的本地更新,需要先⽤ git pull 试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再⽤git push origin branch-name推送就能成功!
- 功能开发完毕,将分⽀ merge 进 master,最后删除分⽀。