一种多版本、多人并行开发GIT分支管理规范

首发公众号: 赵侠客

引言

作为开发者每天在写代码的同时也在写BUG,所以一方面需要开发新的需求,另一方面还要填自己以前挖的坑。目前主流程序员都在使用GIT来管理自己的代码,当GIT仓库有多人维护或者项目有多个版本同时迭代开发时,就需要有一套合理的GIT分支管理流程来维护自己的代码。一般企业级项目都是按版本来迭代的,每个版本之间可能并不是串行的,在业务快速发展阶段很可能会出现多版本并行开发的情况,以公司有三套环境(测试环境、预发布环境、生产环境)为例本文介绍一种简单的多版本、多人并行开发GIT分支管理规范,希望该GIT分支管理规范能对您的团队带来帮忙,同时因为每个公司开发人员水平和流程有差异如果觉得该规范有什么不合适地方也希望大家指出,可以一起探讨改进。

二、环境介绍

  • 测试环境(dev)

为了简单我们没有拆分开发环境和测试环境,严格来说开发环境(dev)是做为开发者自己来Debug的一套环境,测试环境(test)是开发者完成需求开发后交付给测试人员验证的一套环境,为了方便快捷我们可以将这两个环境合成一个环境,当然这也因为开发人员频繁发版给测试人员带来测试环境不稳定的问题,还可能对测试人员回归BUG产生影响,可能回归好的BUG由于开发人员修改了代码又复现了。 不过既然是多版本并行开发,主要是以效率为主,开发和测试之前配合是非常重要的,好的配合是可以避免这些问题。

  • 预发布环境(pre)

这套环境是模拟生产环境,在测试人员完成所有BUG回归后会将需要发版的代码部署到预发布环境,在这个环境需要将发版相关的配置、SQL脚本统一整理,为上生产做准备,这个环境基本上不会有因为代码层面产生的BUG,大都是由于配置、数据等问题引发的BUG。

  • 生产环境(prod)

这个环境就是正式环境,发版就是将预发布环境的代码同步到该环境,同时当前版本在上预发布时记录的相关配置及SQL也一并在发版时同步到此环境。

三、开发流程

我们理想的开发流程可能是这样的

  1. 1.0.0版本需求评审
  2. 1.0.0版本代码开发
  3. 1.0.0版本提测
  4. 1.0.0版本上预发
  5. 1.0.0版本发版
  6. 1.0.1版本需求评审

理想的串行开发模式

但是实现的开发流程并不是这样的,做需求的产品可能有好几个人,开发也会有好几个人,每个产品会根据自己的需求排一个独立的版本,然后按排对应的开发人员来完成该版本的开发。我们以同时开发1.0.0、1.0.1、1.0.2三个版本为例:

实际多版本开发流程

这三个版本可能是由三个产品经理来做的需求,每个需求由三个开发人员来完成,然后可能是不同时刻上测试环境,最后统一发版。当然也有可能有一个版本开发周期比较长,无法一起发版,也有可能在开发过程中间线上出线BUG了要单独修复,可能和当前版本一起发版,也可能因为BUG比较严重要立马修复,紧急上线。这些情况在实际开发过程中都是经常遇见的。所以针对这些情况必须有一套清晰的GIT分支管理规范,不然代码可能一团糟,也可能把没有测试过的代码发生产,造成不可预知的结果。

四、GIT分支管理

这套多版本并行开发的GIT分支管理规范主要分为5个:

  • master,和生产环境正在跑的代码保持一致
  • release,和预发布环境正在跑的代码保持一致
  • dev,和测试环境跑的代码保持一致
  • feature/dev_x.x.x,为x.x.x版本需求正在开发的代码,开发前从master拉取
  • hotfix/bug_x,为线上x(Bug号) Bug修复的代码,修复前从master拉取

多版本并行开发GIT规范

上图为同时开发1.0.1和1.0.2版本及修复线上BUG_1的GIT分支管理流程

  • feature/dev_1.0.1,当完成1.0.1需求评审后,相关开发人员从Master拉取此分支进行开发
  • feature/dev_1.0.2,当完成1.0.2需求评审后,相关开发人员从Master拉取此分支进行开发
  • dev,在没有前置需求开发前从Master拉取
  • 1.0.1提测,将feature/dev_1.0.1分支合并到dev,部署dev最新代码到测试环境
  • 1.0.2提测,将feature/dev_1.0.2分支合并到dev,部署dev最新代码到测试环境,这步可能会产生代码冲突,这时谁开发的慢谁就要来解决冲突了🐶
  • hotfix/bug_10000,可能线上出现了一个BUG,需要从Master拉取代码修复,修复完成合并dev,测试环境验证
  • release,项管可能根据实际情况按排每个版本的发版窗口,1.0.1和1.0.2可能一起发,也可能单独发,还有可能和线上BUG一起发,我们根据实际情况,将需要发版的版本和BUG修复版本合并release,再次回归
  • 发版,在release将验证过的版本打tag,交付运维人员上生产
  • 完成发版后合并release到master,删除对应feature或者hotfix的开发分支

总结

本文介绍一种简单的多版本、多人并行开发Git分支管理规范,该方法为实际开发过程中总结的一套方法论,适用于项目快速迭代,需求更新频繁,发版窗口期比较短的业务场景,该方法主要有以下优点和缺点:

  • 优点:
  1. 相对比较简单,不需要借助中间件来管理分支,完全由开发者手动管理分支与开发需求版本之前的对应关系
  2. 支持三套环境、多个版本多人同时开、及线上BUG修复等复杂业务场景开发
  • 缺点:
  1. 上测试和上预发布都可能需要解决一次代码冲突,解决完需测试再次回归验证
  2. 发完版后release一定要合master,不然后面开发从master拉不是最新代码

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

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

相关文章

Axios使用cancel token取消请求

在一个vue项目开发的过程中,遇到一个需要中断文件上传的需求,当我利用axios的cancel token实现中断请求的功能之后,想要再次发送post请求,却发现axios直接返回了reject。 问题复现 当我执行upload方法时,文件能够正常…

PC端微信小程序如何调试?

向往常一样运行开微信小程序开发者工具 如果只弹出pc端小程序,没有出现调试的界面:点击胶囊按钮的三个…选择重新进入小程序 即可依次展开相应的功能调试,改完代码没反应再刷新看看,再没反应就再次重新点击编译并自动调试。

中国AIGC最值得关注企业产品榜单揭晓!首份应用全景图谱发布

“你好,新应用!” 站在大模型落地元年,是时候喊出这句话了。 从软件APP、智能终端乃至具身智能等等,AIGC开始席卷一切。 大模型玩家、互联网巨头、终端厂商、垂直场景玩家纷纷入场,办公、创作、营销、教育、医疗领域…

电瓶车常见电压数据 48v/60v/72v 说明

常见电压数据 48v/60v/72v的区别 48v 基本属于电动自行车,适合10公里内的骑行,速度慢,25公里/时,适合老年人60v 电轻摩,不能带人,适合远距离出行72v 适合外卖小哥 电压和电机功率 48v 电动车通常配备400…

A: 数数(牛客练习赛129)

题目链接: A-数数_牛客练习赛129 (nowcoder.com) 题目描述: 样例输入: 5 样例输出: 0 思路分析: 直接求偶数是困难的,之前好像听过:任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积。那么就是间接的去做&a…

STM32F103C8----3-2 LED流水灯(跟着江科大学STM32)

一,电路图(接线图) 面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客》 二,目的/效果 三,创建Keil项目 详细参考:《STM32F103C8----2-1 Keil5搭建STM32项目模版&#xff…

每天3分钟,彻底弄懂神经网络的优化器(三)Momentum

前面从最初的SGD开始,介绍SGD的算法细节,以及其在深度神经网络中的劣势,本文引入Momentum算法,解决SGD的一些问题。 1. Momentum算法的提出 动量(Momentum)方法最初由B.T.Polyak在1964年提出。这一方法被…

国庆节快乐|中国何以成为中国

华夏之土,广袤无垠;中华之史,源远流长。自古以来,中原大地物华天宝,人杰地灵,遂成一国,是谓中国。然中国之所以为中国,非徒地大物博、历史悠久也,更有其深厚之文化底蕴、…

改善大模型 RAG 效果:结合检索和重排序模型

最近这一两周不少大厂都已经开始秋招面试了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&am…

苹果退出OpenAI融资谈判

🦉 AI新闻 🚀 苹果退出OpenAI融资谈判 摘要:据《华尔街日报》报道,苹果公司已决定不参与OpenAI的新一轮融资,计划筹集约65亿美元(约454.98亿元人民币)。OpenAI正进行从非营利到盈利性公司的转…

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级 隔离熔断限流降级 隔离 隔离的思想其实就是舱壁模式,这在Docker中有所体现。在Docker中,容器与容器间互相隔离互不影响。一个容器有它独立的与外界隔离的环境与资源,包括CPU、内存等&…

AI读教链《关于美国、中国和BTC的三个超级变量​》

这篇文章探讨了美国、中国及比特币(BTC)当前经济形势中的三个超级变量,强调了对经济状况的重新审视。 美国经济与衰退:尽管有观点认为美国经济正在衰退,文章指出这取决于如何定义衰退。美股市场的市盈率处于高位&#…

实用工具推荐---- PDF 转换

直接上链接:爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下: 全免费!!!!

低功耗4G模组Air780E的串口通信指南

今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法,合宙的小伙伴们,学起来吧! 一、硬件准备 780E开发板一套,包括天线、USB数据线。 USB转TTL工具或线(例如ch340、ft232) PC电脑,串口…

【系统方案】智慧城市大数据平台建设方案(Word)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

零基础学习AI大模型,手把手带你从入门到实践!看过的已经月入6w了!

引言: 在2024年这个充满挑战的就业市场环境下,许多人都在寻求掌握一门技术以增强自己的竞争力,但往往不知道该选择学习什么。今年,学习人工智能无疑是一个明智的选择。 对于外行人而言,AI可以被理解为一种模拟人类智…

【ASE】第四课_护盾效果(有碰撞效果)

今天我们一起来学习ASE插件,希望各位点个关注,一起跟随我的步伐 今天我们来学习护盾的效果。 思路: 1.添加纹理贴图和法线贴图(这里省略) 2.添加护盾边缘顶点扰动效果,也可以理解成变形效果 3.添加碰撞…

远程服务器安装anaconda并创建虚拟环境

1、承接上文新用户zrcs,在服务器的zrcs文件夹下直接下载anaconda(很慢): wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 或者选择本地下载,清华大学开源软件镜像站:https:/…

德克威尔FS系列一体式PROFINET协议模块组态步骤

1、通讯连接图 2、硬件配置 3、安装GSD文件 4、新建工程与设备组态 1 打开TIA Portal V16,选择新建工程并组态。 2.组态设备,切换到网络视图窗口中,右侧展开硬件目录,选择PN-HH00-C1NN拖拽到网络视图中。 3.在网络视图中为远程IO模块分配控制器,鼠标单击IO模块中“未分配”…

VSCode 中配置 C/C++ 环境的步骤

VSCode 中配置 C/C 环境的步骤 1. 安装 VSCode 1、下载位置 https://code.visualstudio.com/Download2、安装 正常操作步骤,同意协议,下一步,点击完成即可 2. 安装 C/C 扩展 打开 VSCode。 点击左侧的扩展图标(或使用快捷键…