04架构管理之分支管理实践-一种git分支管理最佳实践

        专栏说明:针对于企业的架构管理岗位,分享架构管理岗位的职责,工作内容,指导架构师如何完成架构管理工作,完成架构师到架构管理者的转变。计划以10篇博客阐述清楚架构管理工作,专栏名称:架构管理之道

一句话导读

        对于架构管理、研发管理中,分支管理是公司研发过程中必不可少的一个实践。本文主要是根据个人及公司实践,来说明下具体的分支管理方法,这里的分支指的git仓库的代码分支。分支管理方法有很多,大家可以自行定义,只要能够完成研发协作即可。

目录

一句话导读

一、环境管理

        1.开发环境

        2.测试环境

        3.预发布环境

        4.生产环境

        5.扩展

二、分支管理

        1.feature分支

        2.develop分支

        3.release分支

        4.master分支

        5.tag

        6.hotfix分支

三、分支管理原则


一、环境管理

        一般公司研发都会有几个环境,如开发环境、测试环境、预发布环境、生产环境,有些公司甚至还有本地环境、验收环境、演示环境、性能测试环境等等。针对这么多的环境,我们研发中要根据公司、项目的实际情况,进行环境的管理。一般项目应该有开发环境、测试环境和生产环境。有些小项目也可能只有一个研发环境,项目结束后直接将研发环境转为生产环境。所以说研发环境的需求应该是根据实际情况来定的。

        1.开发环境

        研发人员将完成的代码发布到开发环境中,做初步的集成测试,开发环境由开发人员自行管理,代码极其不稳定,环境机器配置可以比较低。一般用dev标识

        2.测试环境

        主要提供给测试人员使用,代码经过研发环境自测完成后可以提测,代码由测试管理员管理,环境代码相对比较稳定,环境机器根据测试要求配置即可,不用太高配置。一般用test标识

        3.预发布环境

        主要提供个测试人员使用,或者做UAT验收使用,代码经过测试环境验证完成后,可以提交到预发布环境中,环境的配置和数据最好和生产一致,目的是在上生产前做最后确认,环境代码和生产保持一致。机器配置最好和生产环境一致。一般用pre标识

        4.生产环境

        代码最终交付的环境,一般部署经过测试验证、预发布验证的代码,生产环境由专人负责严格管理,一般用prod标识

        5.扩展

  • 本地环境:研发人员自己本机的环境,开发人员自行管理,部分中间件、数据库等可以自建或者用开发环境中的组件。用户开发过程中的调试等工作。
  • 验收环境:一般由测试人员管理,负责将已完成的功能需求代码部署上去,交由最终软件的用户进行测试或需求提出的业务部门进行验收测试,通常测试完成后即可发布生产环境,一般用UAT标识
  • 演示环境:演示环境相对于生产环境而定义的,环境是给用户演示而定制的。功能基本和生产一致,用户相对较少,环境要保持相对稳定,尤其是客户需要做演示的时候。一般用demo标识
  • 性能测试环境:主要是对软件的性能情况进行测试。环境应该和生产保持一致,但是一般性能测试环境是临时的,测试完成后即可下线。

二、分支管理

        分支管理的逻辑最好是和团队规模相匹配。更好的git分支管理,有助于团队的协作效率的提高和代码的管理。我们使用基于主干分支管理策略,将代码分支和环境相对应,提高代码的质量。

        1.feature分支

        研发分支,研发人员从develop分支拉取,并以feature/开头命名自己的研发分支,开发人员对于新的需求则在该分支上开发,并自行管理,对应本地环境。

        2.develop分支

        研发测试分支,研发人员可将开发好的代码合并到该分支上,在研发环境进行初步集成自测,该分支由研发人员自行管理。

        3.release分支

        测试分支,该分支为保护分支,不允许研发人员直接commit代码,研发人员可以发起feature分支合并到release分支的申请,由配置管理员进行合并,发布到测试环境进行集成测试。该分支由配置管理员管理。

        4.master分支

        生产分支,该分支为保护分支,不允许研发人员直接commit代码,只接受release分支的合并,由配置管理员负责管理,发布生产环境。

        5.tag

        版本归档标识,当发布的系统稳定后形成tag版本标识,进行归档。

        6.hotfix分支

        问题修复分支,如果生产版本发布稳定后,出现bug,可从master拉取hotfix分支,修复完成后,合并到release分支测试通过,将hotfix合并到master发布生产,形成新的tag;如果是发布过程中有bug,也可拉取hotfix分支,并提交release分支测试后走后续发布流程

具体如下图:

三、分支管理原则

        主分支保持稳定: 主分支(如 main 或 master)应该保持稳定,只有已上线的代码。禁止直接在主分支上开发。

  • 特性分支:开发人员在对新功能的开发时,创建独立的特性分支。分支名可以描述功能的目标,如 feature/login。
  • 修复分支:对于 bug 修复,创建修复分支,确保修复在主分支上得到合并。分支名可以描述修复的问题,如 hotfix/login-error.
  • 命名规范:根据公司、团的命名习惯,使用统一的命名规范,清晰的命名方式以便团队成员理解分支用途。可以采用统一的前缀,如 feature/、hotfix/。
  • 小而频繁的提交:不要在一次提交中修复两个bug。单次提交的改动越小,更便于其他开发者理解,每次提交关注一个特定的更改,这有助于追踪和回溯变更历史。
  • 定期合并主分支:定期从主分支拉取最新代码,保持特性分支与主分支同步。避免分支过长时间的分离。
  • 代码审查:代码在提交测试前进行代码审查,提高代码质量。
  • 远程分支:及时推送特性分支到远程仓库,便于团队成员协作和代码审查。
  • 删除不必要的分支:一旦特性分支完成开发或修复,及时删除不再需要的分支,保持仓库的整洁。
  • 标签版本:使用标签来标识重要的版本发布,方便追踪和部署特定版本。
  • 培训和文档: 对团队成员进行培训,分享分支管理的最佳实践和流程,编写分支管理指南。

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

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

相关文章

PDF转Word的方法分享与注意事项。

PDF和Word是两种常用的文档格式,它们各有优点,适用于不同的场景。然而,有时候我们需要将PDF转换为Word,以便更好地进行编辑和排版。本文将介绍几种常用的PDF转Word的方法,并分享一些注意事项。 一、PDF转Word的方法 使…

05-JVM内存分配机制深度剖析

上一篇:04-JVM对象创建深度剖析 1.对象栈上分配 我们通过JVM内存分配可以知道JAVA中的对象都是在堆上进行分配,当对象没有被引用的时候,需要依靠GC进行回收内存,如果对象数量较多的时候,会给GC带来较大压力&#xff…

按照xml文件和txt文件名,将对应名字的图象文件复制

按照xml文件和txt文件名,将对应名字的图象文件复制 需求分析解决方案 需求分析 就是已经标注了xml和txt文件,需要将其对应的图象文件挑选出来 解决方案 # 按照xml文件删除对应的图片 # coding: utf-8 from PIL import Image, ImageDraw, ImageFont imp…

k8s集群证书过期解决

一、k8s集群证书过期解决 问题现象 K8S集群证书过期后,会导无法创建Pod,通过kubectl get nodes也无法获取信息,甚至dashboard也无法访问。 执行命令发现报错: Unable to connect to the server: x509: certificate has expire…

使用ffmpeg截取视频片段

本文将介绍2种使用ffmpeg截取视频的方法 指定截取视频的 开始时间 和 结束时间,进行视频截取指定截取视频的 开始时间 和 截取的秒数,进行视频截取 两种截取方式的命令行如下 截取某一时间段视频 优先使用 ffmpeg -i ./input.mp4 -c:v libx264 -crf…

多维时序 | MATLAB实现GWO-GRU灰狼算法优化门控循环单元的多变量时间序列预测

多维时序 | MATLAB实现GWO-GRU灰狼算法优化门控循环单元的多变量时间序列预测 目录 多维时序 | MATLAB实现GWO-GRU灰狼算法优化门控循环单元的多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现基于GWO-GRU灰狼算法优化门控循环单元的多变量时…

dbeaver离线安装clickhouse连接驱动

Clickhouse 数据库连接工具——DBeaver 主要介绍了Clickhouse 数据库连接工具——DBeaver相关的知识,希望对你有一定的参考价值。 Clickhouse 数据库连接工具——DBeaver 1.下载 DBeaver 和 连接驱动 https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.…

如何实现软件的快速交付与部署?

一、低代码开发 微服务、平台化、云计算作为当前的IT技术热点,主要强调共享重用,它们促进了软件快速交付和部署。 但现实的痛点却是,大多数软件即使采用了微服务技术或者平台化思路,也难以做到通过软件共享重用来快速满足业务需求…

C语言文件操作总结

目录 字符方式读入文件 数据块方式读写文件 文件定位与随机读写 文件中数据的修改 字符方式读入文件 1.向文件中写入(输入字符) 用 fputc 函数或 puts 函数可以把一个字符写到磁盘文件中去。 int fputc(int ch,FILE * fp) ch 是要输出的字符&#…

Elasticsearch(二)kibana数据检索

Elasticsearch(二)kibana数据检索 1.简述 有了数据学习使用kibana调用api检索数据,熟练kibana操作后再进一步使用spring data。 term用于keyword类型数据精准查询,类似mysqlmatch 用于text类型数据分词查询,倒排索引 首先针对keyword文本…

代理IP与网络安全在跨境电商中的关键作用

跨境电商已成为全球商业的重要组成部分,然而,随之而来的网络安全问题也日益凸显。为了在海外市场取得成功,不仅需要优质的商品和服务,还需要稳定、安全的网络连接。本文将介绍如何运用Socks5代理IP技术解决这些挑战。 1. 代理IP与…

【Spring面试】一、SpringBoot启动优化与Spring IoC

文章目录 Q1、SpringBoot可以同时处理多少请求Q2、SpringBoot如何优化启动速度Q3、谈谈对Spring的理解Q4、Spring的优缺点Q5、Spring IoC容器是什么?作用与优点?Q6、Spring IoC的实现机制是什么Q7、IoC和DI的区别是什么Q8、紧耦合与松耦合的区别&#xf…

[技术杂谈]几款常用的安装包制作工具

下面是几款常用的安装包制作工具: Inno Setup:Inno Setup 是一款免费开源的 Windows 平台上的安装包制作工具,支持多种自定义选项和脚本编写,提供了可视化的界面和易于使用的向导引导。它可以创建用户友好的安装程序,…

1.线性表

文章目录 1.1线性表1.2线性表的顺序表示和实现 1.1线性表 线性结构的特点: 在数据元素的非空有限集中。 <1>存在惟一的一个被称为“第一个”的数据元素&#xff1b;<2>存在惟一的一个被称为“最后一个”的数据元素&#xff1b;<3>除第一个之外&#xff0c;集…

javaee spring 声明式事务管理 自定义异常类

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframewo…

无服务架构--Serverless

无服务架构 无服务架构&#xff08;Serverless Architecture&#xff09;即无服务器架构&#xff0c;也被称为函数即服务&#xff08;Function as a Service&#xff0c;FaaS&#xff09;&#xff0c;是一种云计算模型&#xff0c;用于构建和部署应用程序&#xff0c;无需关心…

Ubuntu yolov5 环境配置

查看Ubuntu版本 $ cat /proc/version Linux version 5.4.0-150-generic (builddbos03-amd64-012) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023虚拟机磁盘扩容 因为在环境搭建过程中遇到了磁盘空间不足的问题&a…

伪静态web.config常见规则写法与参数介绍说明

伪静态web.config常见规则写法与参数介绍说明. 示例1&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><system.webServer><rewrite><rules><rule name"规则 1" stopProcessing"tru…

【linux命令讲解大全】073.“Linux文件搜索工具:bzgrep和egrep的使用方法“

文章目录 bzgrep补充说明语法参数 egrep补充说明语法实例 从零学 python bzgrep 使用正则表达式搜索.bz2压缩包中的文件。 补充说明 bzgrep命令用于在.bz2压缩包中搜索符合正则表达式的内容&#xff0c;并将匹配的行输出到标准输出。 语法 bzgrep <pattern> <bz2…

css flex:1;详解,配合demo效果解答

前言 给设置了display&#xff1a;flex的子组件设置了flex&#xff1a;1&#xff1b;就能让他填满整个容器&#xff0c;如果有多个就平均 flex&#xff1a;1&#xff1b;是另外三个样式属性的简写&#xff0c;等同 flex-grow: 0; flex-shrink: 1; flex-basis: auto;我们就针…