高效分支管理规范

一、目的

通过标准化的流程和最佳实践,确保代码组织清晰、版本控制高效、变更管理有序,从而提高软件开发的质量、效率和可维护性,支持团队协作和持续集成/持续部署流程,最终实现项目的长期成功和发展

二、分支命名规范

  • 简洁明了:使用英文小写字母和下划线,避免使用特殊字符。

  • 易于识别:通过命名能够快速识别分支的用途和所属项目。

  • 统一规范:确保所有团队成员遵循相同的命名规则。

分支名称分支命名功能介绍约束对应环境
主干分支master用于线上部署的稳定代码只接受合并请求,每次发布打上Tag标签生产环境
开发分支dev用于整合开发成员的代码的主干分支,从master分支创建开发环境
发布分支release/xxx用于发布新版本的分支,xxx为版本号,从develop分支创建,最终合并回maste分支只接受合并请求测试/UAT/生产环境
修复分支hotfix/xxx用于修复线上紧急bug的分支,xxx为版本号,从master分支创建并合并回master和develop分支。测试环境
修复分支fix/xxx用于修复转测的bug。从release/xxx创建,xxx为迭代编号+转测编号,如fix/1.6就是迭代1第6次转测,最终合并到release/xxx和dev分支开发环境,测试环境

三、分支的使用和管理规范

1、源码仓库初始化

当接收到正常的业务需求时,项目经理/开发主管根据架构设计在gitlib上创建初始版项目,全英文小写,中间用_作为连接符:

  • 后端代码以_service后缀

  • 前端代码以_web后缀

  • 移动端代码以_app后缀

创建分支,项目创建为master分支为主干分支,基于master创建dev分支,基于dev创建release分支(如果版本没确定可以放到转测时创建),设置三分支均为受保护分支,且master/release分支只有Maintainer角色可以合并。

注:Maintainer角色只能授予PM、测试组长、技术组长

2、新功能开发流程

  1. 新的迭代开始,所有开发人员从主干dev拉个人分支开发特性, 分支命名规范 feature-name(根据项目实际情况可以省略特分支,此分支就是个人远程仓库,防止直接合入开发分支,通过提交merge的方式,只有代码检视通过才能合入,提升代码库质量)--这里可以增加自动代码审查。

  2. 开发完成后,通过自测,本地代码质量扫描合入dev分支

  3. 将本次迭代转测所有代码部署到dev环境,完成集成测试,并通过代码质量检查

  4. 基于dev拉取要发布的分支,release/xxx(如果创建好则跳过),将这个分支部署到测试环境进行测试

  5. 验收测试通过后,基于release/xxx发布版本。

  6. 待版本发布稳定后,将release/xxx同步到master,同时在 Master 分支上打个 Tag 记住 release 版本号,然后可以删release/$version

3、修复线上Bug(hotfix分支)

  1. master 分支某个 tag 上创建一个 hotfix 分支(热修复分支),一般是最新的 tag 应该和当前生产环境对应

  2. 开发人员完成Bug 修复,提交 hotfix 分支到测试环境验收通过

  3. 基于hotfix分支发布版本

  4. 待版本发布稳定后,将 hotfix 分支合并到dev与master 分支,同时在 master 分支上打个 Tag 记住 hotfix 版本号

  5. 删除 hotfix 分支

4、测试Bug修复流程

  1. 基于release/xxx分支创建fix/xxx的修复分支;

  2. 在fix/xxx的修复分支在开发环境自测通过,通知测试部署到测试环境验证;

  3. 测试验证通过,研发将fix/xxx分支代码同步到release/xxx与dev分支,同时删除fix/xxx分支;

四、提交内容规范

Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。但是,一般来说,commit message 应该清晰明了,说明本次提交的目的。提交规范设置为:" type:subject "

type

用于说明 commit 的类别,只允许使用下面7个标识。

  • feat:新功能(feature)

  • fix:修补bug

  • docs: 仅文档更改

  • style:格式(不影响代码运行的变动)

  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)

  • revert:回滚到上一个版本

  • test:增加测试

subject

subject 是 commit 类型的简短描述,建议不超过50个字。

五、提交分支规范

  • 禁止向主分支直接提交代码,包括代码仓库在线编辑修改;

  • 禁止提交测试性代码到任何主分支源码(src)目录,测试代码只能存在于测试(test)目录;

  • 禁止任何工作分支跨主分支提交代码,工作分支从只能合并到与工作分支同源的主分支;

  • 必须备注每一次提交,代码备注必须简要可读。准确的描述具备可检索性;

  • 必须备注每一次合并请求,对合并请求包含的功能点简要描述。准确的描述具备可检索性。

  • 必须每次提交之前本地完成代码质量扫描;

  • 必须完成代码质量扫描才能合入release/xxx分支;

六、分支的删除规范

  1. 修复分支:

– hotfix/xxx 合并到master与dev分支可以删除,fig/xxx合并到dev和release/xxx 可以删除。

  1. 发布分支:

– release/xxx合并到master后可以产出。

  1. 注意事项:

– 删除分支前,确保该分支的代码已经合并回了相应的主分支,并且不再需要保留。

七、其他注意事项

  • 定期进行分支清理,避免分支过多导致管理混乱。

  • 团队成员应定期培训和交流,确保对分支管理规范有深入理解和遵循。

  • 遵循敏捷开发原则,灵活调整分支管理策略以适应项目需求变化。

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

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

相关文章

前后端分离练习(云客项目)

这几天学习了一点前端的开发,后面通过这个小项目来整理开发的过程,参考的是动力节点的动力云客这个项目,大家有兴趣可以去看一下视频,我更多的是学习了它的前端开发,后端我是用自己的方式来的,那么开始今天…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释: D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明:D:\Program Files\Oracle\Virtual…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日,Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持,进一步拓展了 Navicat 的兼容边界。即日起,Navicat 17 所有用户可免费升级至最新版本,通过 Navicat 工具实现 TiDB 数据库…

Flutter:key的作用原理(LocalKey ,GlobalKey)

第一段代码实现的内容:创建了3个块,随机3个颜色,每次点击按钮时,把第一个块删除 import dart:math; import package:flutter/material.dart; import package:flutter_one/demo.dart;void main() {runApp(const App()); }class App…

10款PDF翻译工具的探索之旅:我的使用经历与工具特色!!

在如今的时代,PDF文件已经成为我们工作、学习和生活中不可或缺的一部分。但是,当遇到一些非母语或陌生语言的PDF文档时,这要怎么办呀!这时候翻译工具就显得尤为重要了。这也是我所遇到过的难题,现在我将与大家分享几款…

L11.【LeetCode笔记】有效的括号

目录 1.题目 2.分析 理解题意 解决方法 草稿代码 ​编辑 逐一排错 1.当字符串为"["时,分析代码 2.当字符串为"()]"时,分析代码 正确代码(isValid函数部分) 提交结果 3.代码优化 1.题目 https://leetcode.cn/problems/valid-parentheses/descri…

创建vue插件,发布npm

开发步骤:1.创建一个vue项目,2.开发一个组件。 3.注册成插件。 4.vite和package.json配置。5.发布到npm 1.创建一个vue项目 npm create vuelatest 生成了vue项目之后,得到了以下结构。 在src下创建个plugins目录。用于存放开发的…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景,而这些模型的…

MyBatis-Plus的IPage分页total不正确问题

场景: 执行了一条连接查询的sql语句,进行分页后,total不正确问题。如下图: 分析: 分页部分代码如下: String sql searchSqlBuilderInstance.generateSql(); Page page new Page(commonSearchDTO.getPage…

【LeetCode】【算法】53. 最大子数组和

LeetCode 53. 最大子数组和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 思路 思路:动态规划秒了 具体递推式如…

每日八股——JVM组成

直接上图 JVM(Java虚拟机)是运行Java字节码的虚拟机。它主要由以下几个部分组成: 1. 类加载器(ClassLoader) 负责加载class文件到内存中,并生成对应的Class对象。类加载器分为启动类加载器、扩展类加载器…

Java项目实战II基于微信小程序的私家车位共享系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在城市化进…

Linux(CentOS 7) yum一键安装mysql8

1、通过yum安装 (1)下载mysql 在Linux找个地方输入以下命令 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm (2)安装mysql yum 仓库配置文件 [rootVM-8-15-centos ~]# sudo rpm -Uvh mysql80-c…

K8S单节点部署及集群部署

1.Minikube搭建单节点K8S 前置条件:安装docker,注意版本兼容问题 # 配置docker源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 安装docker环境依赖 yum install -y yum-utils device-m…

说说软件工程中的“协程”

在软件工程中,协程(coroutine)是一种程序运行的方式,可以理解成“协作的线程”或“协作的函数”。以下是对协程的详细解释: 一、协程的基本概念 定义:协程是一组序列化的子过程,用户能像指挥家…

Android从Drawable资源Id直接生成Bitmap,Kotlin

Android从Drawable资源Id直接生成Bitmap,Kotlin val t1 System.currentTimeMillis()val bmp getBmpFromDrawId(this, R.mipmap.ic_launcher_round)Log.d("fly", "1 ${bmp?.byteCount} h${bmp?.height} w${bmp?.width} cost time${System.currentTimeMillis…

MySql 日期周处理方式

MySql 日期周处理方式 最近在做数仓相关工作,最近遇到 几个问题, 1、计算指定日期是一年中的第几周,周一为周的第一天 2、计算周的开始时间,结束时间 3、计算周对应的年 比如 2023-01-01 WEEKOFYEAR(2023-01-01) 是2022年的52周&…

多模态大模型简介

多模态大模型是机器学习领域的一个新兴趋势,它结合了文本、图像、音频等多种数据模态,以实现更全面和深入的信息理解和处理。这种模型能够处理跨模态任务,如图像标注、视觉问答、文本到图像的生成等,是人工智能领域的重要进展。 技…

微服务即时通讯系统的实现(客户端)----(1)

目录 1. 项目整体介绍1.1 项目概况1.2 界面预览和功能介绍1.3 技术重点和服务器架构 2. 项目环境搭建2.1 安装Qt62.3 安装vcpkg2.3 安装protobuf2.4 构建项目2.5 配置CMake属性 3. 项目核心数据结构的实现3.1 创建data.h存放核心的类3.2 工具函数的实现3.3 创建编译开关 4. 界面…

STM32WB55RG开发(3)----生成 BLE 程序连接手机APP

STM32WB55RG开发----3.生成 BLE 程序连接手机APP 概述硬件准备视频教学样品申请源码下载参考程序选择芯片型号配置时钟源配置时钟树RTC时钟配置RF wakeup时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙设置工程信息工程文件设置结果演示 概述 本项目旨…