【Git分支管理】分支计谋 | Bug分支
目录1.分支计谋
2.特别场景-Bug分支
2.1 master出现bug
2.2 dev2正在开发☞stash地区
2.3 dev2正在开发master出现bug
2.3.1 fix_bug修复bug和master合并
2.3.2 dev2分支开发完和master合并
[*]合并冲突:merge☞手动解决☞提交
[*]没有合并冲突:merge(包罗了提交)
[*]初学git请画图操作,画图清晰明了。
1.分支计谋
Git分支管理需要服从的几个基本原则:
[*]线上环境:用户可以或许正常访问的内容都属于线上环境。
[*]线上环境非常稳固(不能出现卡顿、退出程序,这些情况都是不被允许的)以是,线上环境要求是稳固且严格。
[*]线上跑的代码是master主分支的代码。master分支必须是稳固的,才可以保证线上环境是稳固的。才可以摆设在线上环境。
[*] 日常开发环境:开发职员提交的代码,还未颠末测试验证。(是不稳固的,存在Bug)用户不大概访问日常开发环境的。
[*] 测试团队:公司里面常常存在一些测试团队。帮助测试开发好的代码。颠末一系列的测试,终极将稳固的代码合并到master分支上。
[*] 综上所述:可以表现Git分支的重要性。没有分支管理是不能完成上述这套流程的。
[*] 线上环境跑的代码都是master主分支的稳固代码(都是稳固的提交)
[*] 增加一个新的功能(需要开发):基于master的最新一次提交创建一个新的分支dev1。
[*] 若同时又增加了多个新功能,以是同时基于master创建多个分支dev2 dev3.....多个开发职员同时协同开发。
[*] 分支管理计谋:Git在项目中可以实行 ——多人协作开发
[*] 合并分支保举使用❗:no-ff模式
[*] 开发完成测试稳固之后,提交之后,再和master主分支合并(no-ff模式),有冲突解决冲突提交,没有冲突直接合并再提交。
https://i-blog.csdnimg.cn/direct/0e1c22c260874c3486e954769082e72f.pnghttps://i-blog.csdnimg.cn/direct/3eca0748f92f493da6da95436f49c9b3.png
https://i-blog.csdnimg.cn/direct/fae8eb2db3b24f3ba05c942c6f6be317.png
https://i-blog.csdnimg.cn/direct/f8d908d4225447649a870a0ac879e3e9.png
【合并冲突no-ff模式】
https://i-blog.csdnimg.cn/direct/628324f02e3a4eb3850c7e493fe191bf.png
【没有合并冲突no-ff模式】
https://i-blog.csdnimg.cn/direct/229b3f7a04294c5cac0c94178922e576.png
2.特别场景-Bug分支
2.1 master出现bug
先容下在使用git的时间遇到一个场景:
[*]线上环境是一个稳固的环境。它摆设的是master主分支上的代码。master主分支上的代码就是一个稳固的代码。
[*]我们日常生存中使用网站,APP都遇到过卡死,退出这个网站的情况。(线上环境也不是100%稳固的)此刻就是master主分支的代码出现了bug。
怎样处理这种情况呢❓直接在master主分支去进行代码的修复吗❓不可以。
答复:
就是基于当前master的最新一次提交记载,创建一个bug分支。
再bug分支上,去修改这个bug。当这个bug修改完,再在分支上提交了,再切换至master合并(no-ff模式)即可。
https://i-blog.csdnimg.cn/direct/77adb84d15c34c6eaca9c8341672f741.png2.2 dev2正在开发☞stash地区
有如下情景:
[*]基于master创建一个dev2分支,而且在dev2分支上开发了新增功能部分代码(正在开发....),且并没和master合并提交。
[*]file2文件是只有一份的。在dev2上开发新功能的代码时(没有提交),切换至master也可以看到file2文件开发代码。(只是影响工作区)
[*]固然没有影响本地堆栈,但是我们此刻任然不想对master分支工作区的文件做出任何修改。仅仅只在dev2分支上修改开发。(切换到master的时间并不会影响它)
怎么解决呢❓
答复:
需要先切换到dev2分支上。将新功能开发的代码保存在版本库中stash地区。
使用的命令:git stash
stash地区使用:
[*]git stash :将开发的代码存储进stash地区。
[*]stash地区:保存工作区的修改内容。(保存之后此刻dev2和master的ReadMe文件都没有)
[*]stash地区:.git堆栈版本库里 存在一个地区称为stash,保存工作区的文件的修改
[*]注意:里面存储的是已经被git追踪管理的文件的内容,没有被.git追踪管理的文件是不会被stash保存的。
[*]修复完bug,把stash地区保存的file2新功能开发的内容规复到dev2分支上继承开发。
[*]git stash list : 展示stash地区存储哪些文件
[*]git stash pop:将stash地区存储的内容,规复到dev2分支上继承开发
【出现题目☞切换至master,master中有dev2上开发的代码】
https://i-blog.csdnimg.cn/direct/09dac6cc2d384bf69da23554606b15f1.png
【保存至stash地区】
https://i-blog.csdnimg.cn/direct/1ac36a9a4efe4dcfbf9d2606bfe9e5f2.png https://i-blog.csdnimg.cn/direct/c7f288f423a54d9181061f8c427190fa.png
【保存至stash地区之后☞master和dev2分支上新功能开发的代码都不在了】
https://i-blog.csdnimg.cn/direct/2b44be3f4d7c479fb42df0413232a33d.png【没有被git追踪管理文件不会被存储在stash里面】
https://i-blog.csdnimg.cn/direct/60ce4e772aab428daec46fdf29a9d22d.png
【把stash地区存储的内容规复到dev2分支上】https://i-blog.csdnimg.cn/direct/4ca08a49b25f42ef928fee736210c1f4.png
2.3 dev2正在开发master出现bug
2.3.1 fix_bug修复bug和master合并
在以上情景根本上(下面例子我们以file2文件为例):
[*]起首基于master创建一个dev2分支,而且在dev2分支上开发了新增功能部分代码(正在开发....),且并没和master合并提交。
[*]此时,在开发的过程中,我们发现master分支上出现了一个bug。
怎样处理这种情况❓可以或许直接在dev2上去修复代码吗❓
答复:
不能直接在dev2上进行bug修改,违背dev2分支创建的初衷。(dev2是用来开发代码分支)以是我们需要基于master重新创建一个bug分支去修改master的bug。
假设:bug是hello liuxn应该是hello git
https://i-blog.csdnimg.cn/direct/4d3521c8a5ba4903b0d8372279b5b2ae.png
[*]先将dev2开发的代码保存在stash地区
[*]切换至master分支
[*]基于master创建一个fix_bug分支(用于修改master的bug)
[*]切换至fix_bug分支,修改bug
[*]切换至master分支,合并fix_bug分支(no-ff模式)
[*]删除fix_bug分支
[*]切换至dev2分支,继承开发....(在dev2分支上bug没有修复,不影响)(缘故原由:dev2是基于master有bug版本创建的)
[*]开发完成,切换至master分支,合并dev2分支(no-ff模式)
[*]删除dev2分支
https://i-blog.csdnimg.cn/direct/78077f60c1704e81aabc2718dbc4cbda.pnghttps://i-blog.csdnimg.cn/direct/4ed51f1176374a04800c24c3cc90f35e.png
https://i-blog.csdnimg.cn/direct/859d454894d149159ba2202e8f65d156.png
https://i-blog.csdnimg.cn/direct/58897e321aed4a27996e7dd1d2b3a48b.png
2.3.2 dev2分支开发完和master合并
解决master和dev2分支合并冲突题目
第一种方式:手动解决☞很大概出现新的bug
https://i-blog.csdnimg.cn/direct/f46100d4b96c4b4098f7a0a214805547.png
第二种方式(保举使用):
[*]切换至dev2分支上合并master。
[*]就算有冲突也可以在dev2本地分支上修改,不影响master分支。dev2上修改,并不影响master主分支。
[*]在master合并dev2的分支之前,先在dev2分支上和master合并,并修改好合并冲突以及存在的bug。
[*]再切换至master分支合并dev2。
https://i-blog.csdnimg.cn/direct/abfba709aa5547eabea136cfd3c650d8.pnghttps://i-blog.csdnimg.cn/direct/ce36f84025194e0c8b33a3aed296b587.png
【代码演示】
https://i-blog.csdnimg.cn/direct/b8e89db7f3ed4535a32d397bdca6ae04.png
https://i-blog.csdnimg.cn/direct/ed03ff65ff6941c5800613f70eb2314e.pnghttps://i-blog.csdnimg.cn/direct/84847ac0805d42409bc04842401fba30.png
https://i-blog.csdnimg.cn/direct/6b7bf174149141c9bf761f8f993a8105.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]