GitLab分支管理规范

news2024/9/28 13:26:51

GitLab 分支管理规范

本规范用于描述日常研发流程中关于 GitLab 上代码分支使用的规则, 大家共同严格遵守规范, 避免出现分支管理混乱现象, 保证日常的发版上线工作顺利进行。

  • Workspace: 工作区, 平时我们写代码的地方
  • Index: 暂存区, 写完代码后让它变成的待提交的状态
  • Repository: 本地仓库, 提交暂存区的代码到这里, 记录进入代码本地管理
  • Remote: 远程仓库, 将本地仓库的修改的代码提交到远程, 可以供远程协作的人下载

分支管理规范主要遵循 gitflow 的分支管理流程, 见下图:
图片地址

分支介绍

master 分支

只存线上的代码, 只有确定可以上线时的才合并到 master 上, 并且在 master 的基础上打 Tag

develop 分支

初次创建 develop 时, 需要从 master 分支拉取, 保持开发时代码和线上最新的代码相同。develop 分支是在开发时的最终分支, 具有所有当前版本需要上线的所有功能。

feature 分支

  • 用于开发功能的分支, 必须从最新的 develop 分支代码拉取。分支命名基本上是 feature/xxxxx (和功能相关的名字)
  • 不强制提交到远程仓库, 可以本地创建
  • 比如, 我要开发登录功能, 我从 develop 分支的最新代码创建新分支命名为 feature/login, 然后切换到这个新分支开始开发, 开发完成后, 测试差不多完成, 合并到 develop 分支

release 分支

  • develop 分支已经有了本次上线的所有代码的时候, 并且以通过全部测试的时候, 可以从 develop 分支创建 release 分支了, release 分支是为发布新的产品版本而设计的
  • 通过在 release 分支上进行这些工作可以让 develop 分支空闲出来以接受新的 feature 分支上的代码提交, 进入新的软件开发迭代周期
  • 在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)
  • 比如, 此次 1.0 版本所有的功能版本都已经合并到了 develop 上, 并且所有测试都已经通过了测试, 那我就创建新的 release 分支 release/v1.0, 切换到新分支, 修改最新的版本号等, 不允许大的更改

hotfix 分支

  • 当线上出现 bug 需要紧急修复时, 从当前 master 分支派生 hotfix 分支
  • 修改线上 bug, 修改完成后合并回 developmaster 分钟
  • 比如, 在线上 v1.0 登录功能出现问题, 我从 master 拉取代码创建新的分支 hotfix/v1.0_login, 修改完成后合并到 masterdevelop

业务需求流程

  1. 当接收到正常的业务需求时, 需要约定一个大的发布版本(一次迭代)以及这个发布版本包含的多个 jira 任务, 一个发布版本必须在一个时间点上发布; 如果 jira 上的任务粒度太大, 则需要拆分细化成更小的 jira 子任务(工作量在 1~2 人日为准, 最好控制在一天以内)
  2. develop 为基准创建一个分支, 分支名称为 feature-jira编号-开发人员姓名全拼, 如 feature-ONC-21-lishaohua, jira 任务 ONC-21 的所有开发工作都在 feature-ONC-21-lishaohua 分支上进行, 所有开发过程的 commit message 需要填写具体的开发内容
  3. 开发及单元测试工作完成后创建 merge request 合并到 develop 分支, 合并请求消息同样需要复制 jira 的内容描述以及具体的开发内容
  4. 开发人员的自测工作基于合并后的 develop 分支代码进行, 如果这个发布版本所有 jira 任务全部自测通过后, 基于测试通过的 develop 分支创建一个 release 分支, 分支名称为 release-版本号, 如 release-ctrip1.0, 测试人员基于 release 分支进行测试
  5. 测试人员继续在新建的 release 分支上进行回归测试和验证, 如果存在 bug 直接在该分支修改并合并到 develop 分支, 如果验证通过则准备生产上线
  6. 生产上线时将 release 代码合并到 master 分支, 并打 tag, tag 名称为 tag-版本号, 从 master 打包上线

线上紧急 bug 修复流程

  1. 当发现线上 bug 需要紧急修复时(开发人员需要确保 bug 修复已经在 jira 录入), 需要以 master 分支为基准创建一个 hotfix 分支, 分支名称为 hotfix-jira编号-开发人员姓名全拼
  2. bug 修复代码直接在新建的 hotfix 分支上提交, commit message 需要填写具体的开发内容。测试人员直接在 hotfix 分支测试
  3. 测试通过后, 开发人员同时请求合并到 master 分支和 develop 分支, 合并请求消息同样需要复制 jira 的任务描述以及具体的开发内容
  4. 生产上线时将 hotfix 代码合并到 master 分支, 并打 tag, tag 名称为 tag-版本号-jira编号, 从 master 打包上线

高优先级开发任务流程

  1. 如果在其他发布版本或迭代在开发中, 而优先级更高的迭代需要同时进行, 则需要特别注意。在创建 feature 分支时, 要确保 develop 分支和 master 分支时一致的没有被未上线甚至未测试的代码污染过的, 如果是则直接以 develop 分支为基准创建新的分支, 命名规范如同正常的业务需求流程; 如果 develop 分支上已经有其他未上线分支的代码且该分支代码上线优先级较低, 则不能以 develop 分支为基准创建分支, 需要以 master 分支为基准创建分支
  2. 当更高优先级 feature 功能开发和自测完成后, 需要上测试环境, 这时, 需要以 master 分支为基准创建一个 release 分支, release 分支名称为 release-版本号, 所有较高优先级的 feature 分支合并到高优先级的 release 分支上, 并在该分支进行测试
  3. release 分支测试通过后, 合并到 master 分支准备上生产, 同时 release 合并到 develop 分支; master 分支生产上线后打 tag, tag 名称为 tag-版本号

最后注意点

  1. 长期的使用的分支有两个 master 分支和 develop 分支, 其他的辅助分支 hotfix 分支、feature 分支以及 release 分支都是临时分支, 其生命周期在合并到 developmaster 上之后就基本结束, 所以大家要养成良好的习惯, 在分支生命周期结束之后尽快删除掉, 以免堆积太多的分支而导致混乱
  2. 大家开发过程中要勤提交、勤合并, 原则上一些方法级别、类级别或单元测试级别的修改可以发起一次提交, 提交的 commit message 写明工作的内容, 一个 featurebug 的自测完成可以发起一次 merge request, merge requestmessage 内容要复制 jira 任务的描述以及具体的开发工作内容描述, 切勿堆积很大的工作量才发起合并
    图片地址

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

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

相关文章

《系统架构设计》-05-架构模型(Architecture Model)

文章目录1. 概述1.1 模型1.2 软件设计领域的架构模型2. 领域模型(Domain Model)2.1 概念2.2 示例3. 设计模型(Design Model)3.1 概念3.2 创建过程4. 代码模型4.1 概念4.2 创建过程5. 三种模型的关系1. 概述 1.1 模型 诠释&#…

“华为杯”研究生数学建模竞赛2006年-【华为杯】A题:Ad Hoc 网络中的区域划分和资源分配问题(附获奖论文)

赛题描述 Ad Hoc网络是当前网络和通信技术研究的热点之一,对于诸如军队和在野外作业的大型公司和集团来说,Ad Hoc网络有着无需基站、无需特定交换和路由节点、随机组建、灵活接入、移动方便等特点,因而具有极大的吸引力。 在Ad Hoc网络中,节点之间的通信均通过无线传输来完…

黑马Spring学习笔记(三)——Spring整合MyBatis、Junit

一、Spring整合Mybatis 步骤1:项目中导入整合需要的jar包【pom.xml】<!--Spring操作数据库需要该jar包--> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.20</version&g…

前端技术和框架

一、各种技术概述 1.HTML &#x1f9e8;HTML中文称为超文本标记语言&#xff0c;从语义上来说&#xff0c;它只是一种是一种标识性的语言&#xff0c;并不是一种编程语言。 <p>这是一段话</p>通过这个标签可以表示文本的一个段落。而且其中还有还有图片标签、视…

Dvwa及Sqli安装

Dvwa与Sqli安装资源准备Dvwa安装SQLI安装资源准备 链接&#xff1a;https://pan.baidu.com/s/1ZhPTmSgD-VaAevK-JyWtjQ 提取码&#xff1a;2hkd Dvwa安装 首先将Dvwa解压到phpstudy的www目录下&#xff1a; 然后进入到相应的config文件下&#xff0c;会发现一个dist结尾的文…

第三节 流程控制语句

流程控制语句 顺序结构 分支结构 if分支结构&#xff1a; 格式1: if(条件表达式){ 代码 } 格式2&#xff1a; if(条件表达式){ 代码 }else{ 代码 } 格式3&#xff1a; if(条件表达式){ 代码 }else if&#xff08;&#xff09;{ 代码 }else if&#xff08;&#xff09;{ 代码…

SpringCloud(五)MQ消息队列

MQ概念常见消息模型helloworld案例实现实现spring AMQP发送消息实现spring AMQP接收消息工作消息队列实现发布订阅模型Fanout Exchange实现DirectExchange实现TopicExchange实现DirectExchange 和FanoutExchange的差异DirectExchange 和TopicExchange的差异基于RabbitListener注…

浅谈hcip devops考试心得

官网&#xff1a;华为HCIP-Cloud Service DevOps Engineer 今天考过了hcip devops的考试&#xff0c;写两句&#xff0c;对于一些参加考试的朋友留下一点参考: 第一个问题&#xff0c;hcip还需要报班嘛&#xff1f; 我认为这一项是不需要的&#xff0c;有点浪费钱&#xff0c;…

软件测试人员会被替代吗?IT行业哪个方向的前景最好?字节12年测开是这样说的

互联网测试从业12年&#xff0c;前来作答。 逻辑上来说&#xff0c;软件工程最初始只需要两个岗位&#xff0c;一个是产品经理。&#xff0c;一个是研发&#xff08;开发&#xff09;&#xff0c;剩余的 所有岗位都是由他们衍生而来的。 第三个岗位大概率就是测试&#xff0c…

继电器的工作原理、构成和功能介绍

随着电力应用的不断发展&#xff0c;电气设备已经深入到我们的日常生活中&#xff0c;电气自动化技术大量使用在电力系统和生产型企业中&#xff0c;人们在享受电带来方便的同时要注意用电保护。继电器就是为了保护电路而生的&#xff0c;可以提高电路可靠性&#xff0c;保障用…

山洪径流过程模拟及洪水危险性评价

目录 1.洪水淹没危险性评价方法及技术讲解 2.GIS水文信息提取与分析(基于ArcGIS软件) 3.洪水淹没模拟水文分析&#xff1a;洪峰流量估算 4.洪水淹没模拟水力学分析&#xff1a;Hec-RAS实例操作 GIS水文分析&#xff08;ArcHydro、Spatial Anlysist等模块&#xff09;是流域…

从银行数字化转型来聊一聊,火山引擎 VeDI 旗下 ByteHouse 的应用场景

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近日&#xff0c;火山引擎凭借云原生数据分析平台 ByteHouse&#xff0c;成功入围行业媒体 Internet Deep&#xff08;互联网周刊&#xff09;发布的《2022 云原生企…

【Linux】软件包管理器yum和编辑器vim的使用

文章目录1.软件包管理器yum1.1什么是软件包和软件包管理器1.2yum的介绍与使用2.编辑器vim2.1vim的基本概念2.2vim的基本操作2.3vim【Nomal mode】命令集2.4 vim末行模式命令集2.5 简单的vim配置1.软件包管理器yum 1.1什么是软件包和软件包管理器 在Linux下下载软件的方式是下…

数据治理之元数据管理Atlas

数据治理之元数据管理的利器——Atlas 一、数据治理与元数据管理 1.1 背景 为什么要做数据治理&#xff1f; 业务繁多&#xff0c;数据繁多&#xff0c;业务数据不断迭代。人员流动&#xff0c;文档不全&#xff0c;逻辑不清楚&#xff0c;对于数据很难直观理解&#xff0c;…

高阶人生从在职读研开始——中国社科院与美国杜兰大学金融管理硕士

说到学历&#xff0c;好多人都不太在意&#xff0c;感觉学历没什么用。等升职学历被卡时&#xff0c;等你想考公学历达不到时&#xff0c;当你想跳槽更大的平台时&#xff0c;学历会显得尤其重要。当机会来临时&#xff0c;我们应该做好全足的准备&#xff0c;而不是眼瞅着机会…

【CSS文字滚动】CSS实现文字横向循环无缝滚动,鼠标移入暂停移出继续(附实测源码)

CSS如何实现文字横向滚动滚动效果1、垃圾liMarquee&#xff08;最好别用&#xff09;2、css实现文字滚动&#xff0c;且鼠标移入移出暂停和继续HTML源码如下&#xff1a;CSS源码如下&#xff1a;JS源码如下&#xff1a;3、片尾彩蛋CSS实现文字横向循环无缝滚动&#xff0c;鼠标…

为什么文档对 SaaS 公司至关重要?

在过去十年左右的时间里&#xff0c;SaaS的兴起使全球数百家公司成为家喻户晓的公司。但他们并不是仅仅依靠产品的力量到达那里的。客户服务和支持是使一切在幕后顺利进行的原因——其中很大一部分是文档。以正确的风格和正确的位置在您的网站上找到适当的用户文档对于将浏览器…

Docker----------网络network

1. 是什么 1.1docker不启动默认网络 1.ens332.lo3.virbr0 在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后&#xff0c;启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡&#xff1a;它还有一个固定的默认IP地址192.168.122.1)&#xff0c…

大数据技术生态全景一览

大数据技术生态全景一览大数据平台ETL数据接入大数据平台海量数据存储大数据平台通用计算大数据平台各场景的分析运算分布式协调服务任务流调度引擎大数据平台ETL数据接入 大数据有很多的产品&#xff0c;琳琅满目。从架构图上就能看出产品很多。这些产品它们各自的功能是什么…

乐友商城学习笔记(十六)

购物车功能分析 新增 判断用户是否登陆&#xff08;页面&#xff09; 未登录&#xff0c;添加到页面的localstrorage中 登陆&#xff0c;添加到redis中 已经存在该商品的购物车记录&#xff0c;更新数量&#xff0c;否则新增一条商品的购物车记录 查询 ly.store.get(“LY_C…