Git---企业级开发模型

news2024/9/22 21:36:39

文章目录

  • 前言
    • 拓展
  • 一、系统开发环境
  • 二、Git分支设计规范
    • master分支
    • release分支
    • develop分支
    • feature分支
    • hotfix分支
  • 三、企业级项目管理实战
    • 准备工作
    • 创建项目
    • 创建仓库
    • 添加成员
      • 1. 添加企业成员
      • 2.添加项目成员
      • 3. 添加仓库开发⼈员
    • 开发场景-基于git flow模型的实践
      • 新需求加入
      • 修复测试环境Bug
      • 修复预发布环境Bug
      • 修复正式环境Bug
      • 紧急修复正式环境Bug
  • 总结


前言

拓展

我们知道,一个软件从零开始到最终交付,大概包括一下几个阶段 : 规划、编码、构建、测试、发布、部署和维护.

最初程序比较简单,工作量也不大.程序猿一个人可以完成所有阶段的工作.但随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大.软件的复杂度不断攀升,一个人已经hold不住了,就开始出现了精细化分工.如下图所示 :
在这里插入图片描述
但在传统的IT组织下,开发团队(Dev)和运维团队(Ops)之间的诉求不同 :

  • 开发团队(尤其是敏捷团队)追求变化
  • 运维团队稳定

双方往往存在利益的冲突.比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制.部门墙由此建立起来,这当然不利于IT价值的最大化.

为了弥补开发和运维之间的鸿沟,需要在文化、工具和实践方面的系列改革—DevOps正式登上舞台.

DevOps(Development和Operations的组合词)是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops)"之间沟通合作的文化、运动或惯例.通过自动化"软件交付"和"架构变更"的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠.在DevOps的软件开发过程包含计划讲了这么多,这个故事到底和Git有什么关系呢?

举一个很简单的例子就能说明这个问题.一个软件的迭代,在我们开发人员看来,说白了就是对代码进行迭代,那么就需要对代码进行管理.如何管理我们的代码呢,那不就是Git(分布式版本控制系统)!!! 所以Git对于我们开发人员来说其重要性就不言而喻了!!!


正文开始!!!

一、系统开发环境

言归正传,对于开发人员来说,在系统开发过程中最常用的几个环境必须要了解一下 :

  1. 开发环境 : 开发环境是程序猿们专门用于日常开发的服务器.为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境.
  2. 测试环境 : 一个程序在测试环境工作不正常,那么肯定是不能把它发布到生产机上.该环境是开发环境到生产环境的过渡环境.
  3. 预发布环境 : 该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测而设立的一套环境.其配置等基本和生产环境一致,目的是能让我们发布正式环境时更有把握!所以预发布环境是你的产品质量的最后一道防线,因为下一步你的项目就要上线了.要注意预发布环境服务器不在线上集成服务器范围之内,为单独的一些机器.
  4. 生产环境 : 是指正式提供对外服务的线上环境,例如我们目前在移动端或PC端能访问到的APP都是生产环境.
    在这里插入图片描述
    对于规模稍微大点的公司来说,可不止这几个环境,比如项目正式上线前还存在仿真/灰度环境,再比如还存在多套测试环境,以满足不同版本上线前测试的需要.

一个项目的开始从设计开始,而一个项目的成功则从测试开始.一套良好的测试体系可以将系统中绝大部分的致命Bug在系统上线之前解决.测试系统的完善和成熟也是衡量一个软件企业整体水平的重要指标之一,测试往往被忽略,因为他对可以的隐性、对软件开发企业不产生直接的效益,但是它确是软件质量的最终保障,乃至项目能否成功的重要因素!

二、Git分支设计规范

分支名称适用环境
master主分支生产环境
release预发布版本预发布/测试环境
develop开发分支开发环境
feature需求开发分支本地
hotfix紧急修复分支本地

注 : 以上表格中的分支和环境的搭配仅是常用的一种,可视情况而定不同的策略.

master分支

  • master为主分支,该分支为只读且唯一分支.用于部署到正式发布环境,一般由合并release分支得到.
  • 主分支作为稳定的唯一代码库,任何情况下不允许直接在master分支上修改代码.
  • 产品的功能全部实现后,最终在master分支对外发布,另外所有在master分支的推送应该打标签(tag)做记录,方便追溯.
  • master分支不可删除.

release分支

  • release为预发布分支,基于本次上线所有的feature分支合并到develop分支之后,基于develop分支创建.可以部署到测试灬预发布集群.
  • 命名以release/开头,建议的命名规则 : release/version_publishtime.
  • release分支主要用于提交给测试人员进行功能测试.发布提测阶段,会以release分支代码为基准进行提测.
  • 如果在release分支测试出问题,需要回归验证develop分支查看是否存在此问题.
  • release分支属于临时分支,产品上线后可选删除.

develop分支

  • develop为开发分支,基于master分支创建的只读且唯一分支,始终保持最新完成以及Bug修复后的代码.可部署到开发环境对应集群.
  • 可根据需求大小程度确定是由feature分支合并,还是直接在上面开发(非常不建议).

feature分支

  • feature分支通常为新功能或新特性开发分支,以develop分支为基础创建feature分支.
  • 命名以feature/开头,建议命名规则 : feature/user_createtime_feature.
  • 新特性或新功能开发完成后,开发人员需合到develop分支.
  • 一旦该需求发布上线,便将其删除.

hotfix分支

  • hotfix分支为线上Bug修复分支或补丁分支,主要用于对线上的版本进行Bug修复.当线上出现紧急问题需要马上修复时,需要基于master分支创建hotfix分支.
  • 命名以hotfix/开头,建议的命名规则 : hotfix/user_createtime_hotfix.
  • 当问题修复完成后,需要合并到master分支和develop分支并推送远程.一旦修复上线,便将其删除.

⼀张图总结:
在这里插入图片描述
其实,以上是企业级常用的一种Git分支设计规范 : Git Flow 模型.但要说的是,该模型并不是适用于所有的团队、所有的环境和所有的文化.如果你才用了持续交付,你会想要一些能够尽可能简化交付过程的东西.有些人喜欢基于主干的开发模式,喜欢使用特性标志.然而,从测试的角度来看,这些反而会把他吓一跳.

关键在于站在你团队或项目的角度思考 : 这种分支模型可以帮助你们解决那些问题?这种模式为哪种开发提供更好的支持?你们想要鼓励这种行为吗?你选择的分支模型最终都是为了让人们更容易地进行软件协作开发.因此,分支模型需要考虑到使用者的需求,而不是盲目听信某些所谓的"成功的分支模型".

所以对于不同公司,规范是会有些许差异,但万变不离其宗,是为了效率和稳定.

三、企业级项目管理实战

准备工作

DevOps研发平台

Gitee企业版免费

在这里插入图片描述
在这里插入图片描述
企业名称可随意填写⼀个测试名称,只要能通过即可。注意,多⼈协作开发,需要将多⼈账号拉入一个企业下才行。

创建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

创建仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:创建的仓库可以关联到某个项⽬中被管理

添加成员

1. 添加企业成员

在这里插入图片描述
在这里插入图片描述
申请后需要负责人审批通过.
在这里插入图片描述

2.添加项目成员

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 添加仓库开发⼈员

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

开发场景-基于git flow模型的实践

新需求加入

现有一个订单管理的新需求需要开发,首先可以基于develop分支创建一个feature/rose_20230710_pay分支.

在这里插入图片描述
在这里插入图片描述

  1. 需求在feature/rose_20230710_pay分支开发完毕,这是研究人员可以将代码合并到develop分支,将其部署在开发环境的服务器中,方便开发人员进行测试和调试.
    a. 开发者在feature分支下发起请求评审

在这里插入图片描述
在这里插入图片描述
b. 审查员审查代码
在这里插入图片描述
c. 审查通过,合并分⽀
在这里插入图片描述
d. 合并成功,查看结果
在这里插入图片描述
2. 在 develop 下开发⼈员⾃测通过后,先确定下 develop 不存在未测试完毕的需求,然后研发⼈员可基于 develop 分⽀创建⼀个 release/xxx 分⽀出来,可交由测试⼈员进⾏测试

在这里插入图片描述
3. 测试⼈员测试 release 通过后(包含测试环境和预发布环境的测试),就可将代码合并⼊master.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 测试⼈员在 master (正式环境) 测试通过后,便可删除 feature/xxx 分⽀.
在这里插入图片描述

修复测试环境Bug

develop测试出现了Bug,建议大家直接在feature分支上进行修复.
修复后的提测上线流程与新需求加入的流程一致.

修复预发布环境Bug

release测试出现了Bug,首先要回归develop分支是同样存在这个问题.

如果存在,修复流程与修复测试环境Bug流程一致.

如果不存在,这种可能性比较小,大部分是数据兼容问题,环境配置问题等.

修复正式环境Bug

master测试出现了Bug,首先要回归下releasedevelop分支是否同样存在这个问题.

如果存在,修复流程与修复测试环境Bug流程一致.

如果不存在,这种可能性也比较小,大部分是数据兼容问题,环境配置问题等.

紧急修复正式环境Bug

需求在测试环节未测试出Bug,上线一段时候后出现了Bug,需要紧急修复的.

有的企业面对紧急修复时,支持不进行环境测试的验证,但还是建议验证下预发布环境.

科技与master分支创建hotfix/xxx分支,修复完毕后发布到master验证,验证完毕后,将master分支合并到develop分支,同时删除掉hot/xxx分支.


总结

至此,关于Git的学习就告一段落啦!!!
希望大家有问题可以积极的私信我!!!

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

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

相关文章

Python之字典(dict)基础知识点

文章目录 一、创建字典1.1 基于dict函数创建1.2 基于{}创建1.3 基于空字典添加元素创建 二、访问字典三、修改字典四、删除字典五、字典的常用方法5.1 dict.items()方法5.2 dict.get()方法5.3 dict.setdefault()方法 参考资料 字典是python当中的一种数据类型,其结果…

Kafka入门,手动提交offset,同步提交,异步提交,指定 Offset 消费(二十三)

手动提交offset 虽然offset十分遍历,但是由于其是基于时间提交的,开发人员难以把握offset提交的实际。因此Kafka还提供了手动提交offset的API 手动提交offset的方法有两种:分别commitSync(同步提交)和commitAsync(异步提交)。两者的相同点是&…

conda创建环境等相关知识

1、首先下载Anaconda,官网下载即可,打开如下选项, 2、创建一个环境:命令如下 conda create -n 虚拟环境名称 python?实例:创建一个pytorch环境,指定python版本为3.9版本 conda create -n pytorch pytho…

【七天入门数据库】第一天 MySQL的安装部署

系列文章传送门: 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 MySQL数据库存在多种版本,不同的版本在不同的平台上(OS,也就是操作系统上&a…

文件资源管理器卡住,使用任务管理器结束任务后桌面图标和任务栏消失的解决方案

事情的起因是这样的,我想删除压缩包里的一张照片,结果文件资源管理器就卡住了,删除进度一直是0%,等了好久也没反应。没办法,只能掏出秘密武器任务管理器了,找到文件资源管理器,右键选择结束任务…

游戏渲染技术:前向渲染 vs 延迟渲染 vs Forward+渲染 (一)

在这篇文章中,会分析和对比三种渲染算法: 前向渲染(Forward Rendering)延迟着色(Deferred Shading)Forward(基于Tile的前后渲染) 介绍 前向渲染 前向渲染是通过在场景中光栅化每个几何对象来工作的,在着色过程中,通过迭代每个灯…

ModaHub魔搭社区:向量数据库Zilliz Cloud删除 Entity和删除 Collection教程

目录 删除单个 Entity 批量删除 Entity 开始前 操作步骤 使用限制 Entity 是指存储在 Zilliz Cloud 集群中的数据实体,包含用于处理、搜索和查询的数据。如果您不再需要某个 Entity,可以执行相关操作将其删除。 本文介绍如何从 Collection 中删除单个或多个 Entity。 …

RocketMQ5.0消息消费<三> _ 消息消费

RocketMQ5.0.0消息消费<三> _ 消息消费 一、消息消费 1. 消费UML图 PUSH模式消息拉取机制参考《RocketMQ5.0.0消息消费<一> _ PUSH模式的消息拉取​》,PullMessageService负责对消息队列进行消息拉取,从B…

Cocktail mac版-Cocktail 苹果版(清理维护优化工具)安装教程

Cocktail for Mac是一款Mac OS X系统清理、修复和优化的常规实用工具。它不仅可以一键清理系统中的残余垃圾。还可以帮助用户修改系统的隐藏属性、隐藏文件,对优化mac系统有很大的帮助。CocktailV11.4破解版增加了清除macOS内容缓存的功能。 内容缓存保留了各种Appl…

如何查看自己windows电脑的ip地址

可能有些小伙伴对查看自己电脑的ip地址不太熟悉,今天这里介绍几种方式: 我自己的电脑是Win11,就直接展示截图了。 一、命令行方式: windowsR打开 CMD(命令行窗口)或者windows PowerShell窗口,输入以下命令&#xff1…

企业信息化可以为企业带来什么效益?

一、什么是信息化 在具体谈信息化前我们先来谈一谈信息化和数字化 信息化:信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力,并使之造福于社会的历史过程。与智能化工具相适应的生产力,称为信息化生产力。 数字化:…

MySQL基础篇第6章(多表查询)

文章目录 1、一个案例引发的多表连接1.1 案例说明1.2 笛卡儿积 2、多表查询分类讲解2.1 等值连接2.2 非等值连接2.3 自连接2.4 内连接2.5 外连接(OUTER JOIN)2.5.1 左外连接(LEFT OUTER JOIN)2.5.2 右外连接2.5.3 满外连接(FULL OUTER JOIN) 3、UNION的使用3.1 UNION操作符3.2 …

Linux 命令大全(下)

Linux 命令大全(上) 本文目录 6. 网络通讯 常用命令6.1 ssh 命令 – 安全的远程连接服务器6.1.1 含义6.1.2 语法格式6.1.3 常用参数6.1.4 参考示例 6.2 netstat 命令 – 显示网络状态6.2.1 含义6.2.2 语法格式6.2.3 常用参数6.2.4 参考示例 6.3 dhclient…

IP协议【图解TCP/IP(笔记九)】

文章目录 IP即网际协议IP相当于OSI参考模型的第3层网络层与数据链路层的关系 IP基础知识IP地址属于网络层地址路由控制■ 发送数据至最终目标地址■ 路由控制表 数据链路的抽象化IP属于面向无连接型 IP即网际协议 TCP/IP的心脏是互联网层。这一层主要由IP(Internet…

【netty】TCP 粘包和拆包及解决方案

TCP 粘包和拆包基本介绍 TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方&#xff0c…

电商API接口商品页面数据(详情数据,销量数据,sku数据,视频数据,优惠券数据)接口代码示例

有探讨稳定采集电商等多平台整站实时商品详情历史价格数据接口,通过该接口开发者可以更好地了解商品的情况,商品详情数据详细信息查询,数据参数包括:商品链接,商品列表主图、价格、标题,sku,库存…

技术流 | 使用eBPF增强kubernetes可观测性的实践分享

本文作者:擎创科技某大拿 01 背景与问题 当前,云原生技术主要是以容器技术为基础围绕着 Kubernetes的标准化技术生态,通过标准可扩展的调度、网络、存储、容器运行时接口来提供基础设施,同时通过标准可扩展的声明式资源和控制器来…

narak靶机详解

narak靶机复盘 首先对靶机进行扫描,找到靶机的真实ip地址。 然后dirb进行目录扫描,扫描到一个目录,我们打开发现是一个登陆界面。 并没有用户名和密码,我们就用cewl扫描这个网站,扫出一个字典,用来暴力破…

2、JDk、JRE、JVM三者区别和联系

JDK JRE JVM 含义 JDK: Java Develpment Kit java 开发工具 JRE: Java Runtime Environment java 运行时环境 JVM: java Virtual Machine java 虚拟机 一张图来解释: 联系: JVM不能单独搞定class的执行,解释class的时候JVM需要调用解…

Openlayers实战:非4326,3857的投影

Proj4js 是一个 JavaScript 库,用于将点坐标从一个坐标系转换到另一个坐标系,包括基准转换。Openlayers地图上,除了默认的4326和3857投影方式外,可以通过Proj4js的拓展,可以显示其他的投影。 本实战中,将ESRI:53009投射到Openlayers地图上。 安装依赖 npm install proj4…