【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模式),有冲突解决冲突提交,没有冲突直接合并再提交。

【合并冲突no-ff模式】 

【没有合并冲突no-ff模式】 

2.特殊场景-Bug分支

2.1 master出现bug 

 介绍下在使用git的时候遇到一个场景:

  • 线上环境是一个稳定的环境。它部署的是master主分支上的代码。master主分支上的代码就是一个稳定的代码。
  • 我们日常生活中使用网站,APP都遇到过卡死,退出这个网站的情况。(线上环境也不是100%稳定的)此刻就是master主分支的代码出现了bug。

如何处理这种情况呢❓直接在master主分支去进行代码的修复吗❓不可以。

回答:

就是基于当前master的最新一次提交记录,创建一个bug分支。

再bug分支上,去修改这个bug。当这个bug修改完,再在分支上提交了,再切换至master合并(no-ff模式)即可。

2.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上开发的代码】 

【保存至stash区域】

 

【保存至stash区域之后☞master和dev2分支上新功能开发的代码都不在了】

【没有被git追踪管理文件不会被存储在stash里面】

【把stash区域存储的内容恢复到dev2分支上】

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

  1. 先将dev2开发的代码保存在stash区域
  2. 切换至master分支
  3. 基于master创建一个fix_bug分支(用于修改master的bug)
  4. 切换至fix_bug分支,修改bug
  5. 切换至master分支,合并fix_bug分支(no-ff模式)
  6. 删除fix_bug分支
  7. 切换至dev2分支,继续开发....(在dev2分支上bug没有修复,不影响)(原因:dev2是基于master有bug版本创建的)
  8. 开发完成,切换至master分支,合并dev2分支(no-ff模式)
  9. 删除dev2分支

2.3.2 dev2分支开发完和master合并 

解决master和dev2分支合并冲突问题

第一种方式:手动解决☞很可能出现新的bug

第二种方式(推荐使用)

  1. 切换至dev2分支上合并master。
  2. 就算有冲突也可以在dev2本地分支上修改,不影响master分支。dev2上修改,并不影响master主分支。
  3. 在master合并dev2的分支之前,先在dev2分支上和master合并,并修改好合并冲突以及存在的bug。
  4. 再切换至master分支合并dev2。


【代码演示】 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ns3-gym入门(三):在opengym基础上实现一个小小的demo

因为官方给的"opengym""opengym-2"这两个例子都很简单,所以自己改了一个demo,把reward-action-state相互影响的关系表现出来 一、准备工作 在ns3.35/scratch目录下创建一个文件夹: (后续的运行指令后面都需要…

【深度学习】基于深度学习的模式识别基础

一 模式识别基础 “模式”指的是数据中具有某些相似特征或属性的事物或事件的集合。具体来说,模式可以是以下几种形式: 视觉模式 在图像或视频中,模式可以是某种形状、颜色组合或纹理。例如,人脸、文字字符、手写数字等都可以视…

一图了解网络通信原理

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…

正则表达式怎么控制匹配的字符串更近的一个

http((?!http).)*m3u8 正则表达式怎么控制匹配的字符串更近的一个 正则如何匹配最近的字符 正则如何匹配最近的两个字符 怎么控制只要离字符串b匹配更近一点的字符串a 解释 a.b,它将会匹配最长的以a开始,以b结束的字符串 a.?b匹配最短的&#xff…

废品回收小程序:高效便捷回收,推动市场发展

随着互联网的发展和人们日益提升的环保意识,对废品回收市场的关注度不断提高,废品回收成为了当下发展前景巨大的行业之一。 传统的废品回收体系不完善,存在较大的不便利性,回收流程繁琐。为了方便大众回收,连接回收企…

【数据结构】树和二叉树——Lesson1

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

科普文:微服务技术栈梳理

概叙 如上两图所示,微服务架构下,需要的组件很多,上面中也并未列全。下面将梳理一下国内微服务架构下,用到的技术栈,仅供参考。 科普文:12种常见的软件架构-CSDN博客 没有最好的架构,只有最适…

常用网络接口自动化测试框架应用

一、RESTful(resource representational state transfer)类型接口测试 (一)GUI界面测试工具:jmeter 1、添加线程组 2、添加http请求 3、为线程组添加察看结果树 4、写入接口参数并运行 5、在查看结果树窗口查看结果 6、多组数据可增加CSVDat…

python数据可视化(7)——绘制箱形图

课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 Python绘制箱形图分析北京天气数据 箱形图 箱形图(Box-plot)又称为盒…

一站式短视频矩阵开发,高效托管!

短视频矩阵系统源码SaaS解决方案提供全面的开发服务,包括可视化视频编辑、矩阵式内容分发托管以及集成的多功能开发支持。 短视频矩阵:引爆您的数字营销革命 短视频矩阵系统是一套多功能集成解决方案,专为提升在短视频平台上的内容创作、管理…

【C++】多态-最全解析(多态是什么?如何使用多态?多态的底层原理是什么?)

目录 一、前言 二、多态是什么? 三、多态的定义及实现 🔥 多态的构成条件🔥 🔥 虚函数的重写🔥 🔥虚函数重写的两个例外 🔥 🍍 协变返回类型 🥝 析构函数的重写…

使用APEXSQL LOG解析sql server事务日志,进行审计与数据恢复

一 下载 https://download.csdn.net/download/sunke861/11449739 二 使用 解压安装包后,点击:ApexSQLLog.exe 2.1 连接数据库 连接要审计的数据库: 假如报错: 则点击ok关闭该窗口,然后点击左上方的New按钮&#xf…

Codeforces Round 958 (Div. 2)(A~C)题

A. Split the Multiset 思路: 最优的策略是每次操作分出 k−1&#x1d458;−1 个 1&#xff0c;然后考虑最后是否会剩下一个单独的 1。 代码: #include<bits/stdc.h> using namespace std; #define N 1000005 typedef long long ll; typedef unsigned long long ull;…

【找不到视图问题解决】@RestController 与 @Controller注解的使用区别

一、问题描述 苍穹外卖在菜品分页查询功能实现的过程中&#xff0c;出现了找不到视图的情况 2024-07-12 21:54:20.860 ERROR 22488 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with p…

Transformer注意力机制

Transformer注意力机制 &#x1f42c; 目录: 一、Transformer简介二、理解注意力机制自注意力机制多头注意力机制 一、Transformer简介 Transformer是一种用于自然语言处理(NLP)和其他序列到序列(Seq2Seq)任务的深度学习模型框架&#xff0c;它在2017年由Vaswani等人首次提出…

手机m4a怎么转换成mp3,手机端即可完成格式转换

M4A&#xff08;MPEG-4 Audio&#xff09;是一种无损压缩的音频格式&#xff0c;通常用于苹果设备和 iTunes 上&#xff0c;因为它能提供较高的音质同时占用较小的存储空间。 然而&#xff0c;MP3 作为最普及的音频格式之一&#xff0c;兼容性更强&#xff0c;几乎所有的播放设…

【单元测试】SpringBoot

【单元测试】SpringBoot 1. 为什么单元测试很重要&#xff1f;‼️ 从前&#xff0c;有一个名叫小明的程序员&#xff0c;他非常聪明&#xff0c;但有一个致命的缺点&#xff1a;懒惰。小明的代码写得又快又好&#xff0c;但他总觉得单元测试是一件麻烦事&#xff0c;觉得代码…

ENSP中NAT的相关实验(两个私网,一个公网)

题目 实验需求 1.按照图示配置IP地址&#xff0c;公网地址100.1.1.1/24 2.私网A通过NAPT&#xff0c;使R1接入到互联网&#xff0c;私网B通过EASY IP&#xff0c;使R3接入到互联网 3.私网A配置NAT SERVER把Telnet的Telnet服务发布到公网&#xff0c;使PC2可以访问 三、实验…

el-table和 el-image图片预览使用插槽后层叠样式错乱问题

问题&#xff1a; 解决办法&#xff1a;在el-image组件中添加preview-teleported 属性 最终效果

MongoDB自学笔记(一)

一、MongoDB简介 MongoDB是一款基于C开发的文档型数据库。与传统的关系型数据库有所不同&#xff0c;MongoDB面向的是文档&#xff0c;所谓的文档是一种名为BSON &#xff08;Binary JSON&#xff1a;二进制JSON格式&#xff09;是非关系数据库当中功能最丰富&#xff0c;最像…