【Git分支管理】分支策略 | Bug分支

news2024/11/13 14:47:48

目录

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.coloradmin.cn/o/1935768.html

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

相关文章

基于Go语言快速开发抖音小程序 提高性能、效率和降低成本开发框架 让开发变得极简单 开箱即用省时又省钱

前言 用Go语言Arco Design集成后台框架,我们把日常开发常用的基础开发成基础包,等到有项目时安装、下载基础代码就可以马上开发业务,您可以快速搭建好抖音小程序应用开发,为大家搭建抖音后台管理、抖音原生开发模板、小程序登录、…

大模型-Bert+PET实战

PET(Pattern-Exploiting Training) 背景:预训练语言模型(比如BERT)知识全面,但是没有针对下游任务做针对训练,所以效果一般,所以需要根据任务做微调。 核心思想:根据先…

langchain 简介

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 LangChain 是一个用于语言模型和应用程序开发的框架,它提供了一系列工具和组件, 帮助开发者更轻松地构建基于大型…

【JVM基础02】——组成-程序计数器解读

目录 1- 引言:程序计数器1-1 程序计数器是什么?为什么用程序计数器?(What)(Why) 2- 核心:程序计数器的原理(How)2-1 使用 javap 查看程序计数器的作用2-2 多线程下程序计数器原理举例 3- 小结:什…

Linux HOOK机制与Netfilter HOOK

一. 什么是HOOK(钩子) 在计算机中,基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流。 二. Linux常见的HOOK方式 1、修改函数指针。 2、用户态动态库拦截。 ①利用环境变量LD_PRELOAD和预装载机…

Calibre:soft check

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 soft check检查在lvs检查中属于必看的类型,往往是因为衬底没有硬连接,接pg stripe造成的 下图是一个soft check的错误报告,重要信息有两个: 1)问题在ntap上,也就是着重检查power pin相关的连…

七款最佳公司电脑屏幕监控软件推荐|2024年屏幕监控软件超全盘点!

在当今企业管理中,电脑屏幕监控软件已成为保障数据安全和提升员工生产力的关键工具。选择一款合适的监控软件,可以帮助管理者有效监督员工的电脑使用行为,防止潜在的安全威胁和不当行为。小编分享七款备受好评的电脑屏幕监控软件,…

揭秘!SmartEDA何以成为新生代国产EDA领军者?

在当下科技日新月异的时代,EDA(电子设计自动化)作为集成电路设计的核心工具,其重要性不言而喻。而在这一领域中,SmartEDA凭借其卓越的性能和创新能力,迅速崭露头角,成为新生代国产EDA的领军者。…

2024可信数据库发展大会|存算分离架构驱动电信数据平台革新

7 月 16 日 - 17 日,由中国通信标准化协会和中国信息通信研究院主办,大数据技术标准推进委员会承办,InfoQ 联合主办的「2024 可信数据库发展大会」(TDBC)在北京召开。 酷克数据解决方案架构师吴昊受邀参与“电信行业数…

PyTorch使用细节

model.eval() :让BatchNorm、Dropout等失效; with torch.no_grad() : 不再缓存activation,节省显存; 这是矩阵乘法: y1 tensor tensor.T y2 tensor.matmul(tensor.T)y3 torch.rand_like(y1) torch.matm…

破解反爬虫策略 /_guard/auto.js(一) 原理

背景 当用代码或者postman访问一个网站的时候&#xff0c;访问他的任何地址都会返回<script src"/_guard/auto.js"></script>&#xff0c;但是从浏览器中访问显示的页面是正常的&#xff0c;这种就是网站做了反爬虫策略。本文就是带大家来破解这种策略&…

USB3200N模拟信号采集卡12位8路500K采样带DIO带计数器

1、概述&#xff1a; USB3200N多功能数据采集卡&#xff0c;LabVIEW无缝连接&#xff0c;提供图形化API函数&#xff0c;提供8通道&#xff08;RSE、NRSE&#xff09;、4通道&#xff08;DIFF&#xff09;模拟量输入&#xff0c;4路可编程数字I/O&#xff0c;1路计数器。 USB3…

C/C++蓝屏整人代码

文章目录 &#x1f4d2;程序效果 &#x1f4d2;具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 &#x1f4d2;代码详解 &#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&a…

前端实现视频播放添加水印

一、效果如下 二、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><style>.container {position: relative;}.base {width: 300px;hei…

VTD学习笔记(一)-启动vtd、基本界面和按钮

写在前面&#xff1a;真快啊&#xff0c;眨眼就毕业上班了&#xff0c;岗位也是做仿真&#xff0c;看来以后就是一直做仿真了&#xff0c;再见了定位~。公司使用的是vtd&#xff0c;看资料是一个很庞大的自动驾驶仿真软件&#xff0c;囊括了车辆动力学到传感器仿真&#xff0c;…

基于Java技术的智慧外贸平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S模式、Java技术、SpringBoot框架 工具&#xff1a;Eclipse、MySQL数据库开发工具 系统展示 首…

【网络工具】Charles 实战(下)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/iAmAo &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会整理一些工作或学习中用到的工具介绍给大家~ &#x1f4d8;Charles 系列文章&#xff1a; 【网络工…

昇思25天学习打卡营第02天|张量Tensor

这节学习的张量&#xff08;Tensor&#xff09;的内容进行总结 &#xff1a; 1、张量的概念&#xff1a;张量是一种多线性函数&#xff0c;可以表示矢量、标量和其他张量之间的线性关系。张量是MindSpore网络运算中的基本数据结构&#xff0c;类似于数组和矩阵。 2、可以通过直…

【同行案例】亚马逊精铺卖家,2年跨境选品思路分享!

店雷达年度商家实战经验分享又来啦&#xff01;希望给各位商友一些选品思路参考。该商家主做亚马逊&#xff0c;2年跨境经验&#xff0c;主营类目艺术品&#xff0c;精铺模式。 一、亚马逊选品思路分享 ☛对于中小卖家&#xff0c;选择月销量300-1000可以较好平衡投入和产出&…

Langchain-Chatchat3.1版本docker部署流程——知识库问答

Langchain——chatchat3.1版本docker部署流程Langchain-Chatchat 1. 项目地址 #项目地址 https://github.com/chatchat-space/Langchain-Chatchat #dockerhub地址 https://hub.docker.com/r/chatimage/chatchat/tags2. docker部署 参考官方文档 #官方文档 https://github.c…