初识git · 有关模型

目录

前言:

有关开发模型


前言:

其实文章更新到这里的时候,我们已经学习了可以满足我们日常生活中的基本需求的指令了,但是为什么要更新本篇文章呢?是因为实际生活中我们对于开发工作,运维工作,以及测试工作都是由单独的分支的,那么一个项目推进的时候,整体的布局是什么样的,不同的人应该使用什么样的分支,这是我们所关心的,自然就会涉及到很多不同的模型,所以本文主要是介绍有关模型的知识。


有关开发模型

我们了解开发模型之前,不妨简单回忆一下之前所涉及到的部分知识,比如master是用来干什么的,dev是用来干什么的,feature是用来干什么的等。

其实追其本源,都是从程序员的负责模块引出来的。

比如开发者,涉及的工作部分肯定是规划代码,写代码,构建代码框架等,对于测试人员,涉及的工作肯定只有一个是测试,对于运维工程师,涉及的工作内容就是发布代码,部署代码,后期维护代码等。

所以实际上的开发项目过程中,开发者们的分支一般都是dev分支,development,开发的意思,对于测试人员,涉及的部分是hotfix,也就是紧急修复分支的意思,对于运维工程师,涉及的分支一般都是Release分支,也就是预发布分支,对于master分支来说,Release分支基本上就是发布之前的最后一道流程了,因为会在该分支测试许多情况。

常见的比如仿真环境,模拟用户真实使用的场景,然后在该分支上访问代码构建的平台,那么什么是灰度测试呢?灰度测试实际上是为了特殊的需求处理的,比如有部分人的环境并不是很符合该代码构建的平台,但是勉强能用,所以为了该类用户的需求,就会单独为该类用户测试。

这是涉及到的开发人员的职责。

所以环境一共分为:

开发环境,测试环境,预发布环境,生成环境。其中的生产环境就是面对用户提供的线上服务平台。

所以就会引发一个问题,对于开发人员来说,肯定是要敏捷度很高,毕竟需求那么多,所以代码变化很大是正常的,对于运维人员来说,肯定是不希望代码变化的,也就是代码稳定了就先这样的感觉。测试人员嘛,就,,,对吧哈哈哈哈。

言归正抓,实际上的开发中如何平衡二者的关心呢?

此时DevOps就出场了,它本质上更像是一种人人都清楚的惯例,而该词语的组成是development operations的组成,开发和运维之间的一种交流文化,详细是什么就不是该文章的内容了,这里放个链接,有兴趣的可以自行查阅:

DevOps到底是什么意思? - 知乎 (zhihu.com)

那么对于分支来说:

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 分⽀并推送远程。⼀旦修复上线,便 将其删除。

所以远端的dev分支并不是我们开发平台的主力,而是本地仓库的feature分支才是我们开发人员的主力。

现在引入模型,由于模型十分多,所以这里介绍一个非常有代表性的模型,也就是Git Flow模型:

对于这个模型而言,就是属于可以持续交付的模型,也就是隔一段时间发布一个新版本,其实现在很多软件都是这个模型了,毕竟不同的用户的需求不同,这也就意味着软件需要不停的更新。

对于不同的公司的开发模型是不一样的,比如腾讯的某个软件,阿里的某个软件都是,我们现在不妨简单模拟一下企业级别的开发流程。

这里放一个简单企业级开发的链接,可以容纳5个人,我们毕竟是简单学习一下,所以要求的平台还不用那么高。

Gitee 企业版 - 企业级 DevOps 研发效能平台

从这个界面进入,随便取一个公司名称,就可以进入了:

项目这里可以简单创建一个项目,对于刚刚登入这个号的人来说,会有新手导向,也就是自动会出现一个项目,这是正常的。

新建项目,并且可以关联到自己的仓库。

创建好了之后就是较为空荡荡的。

但是我们还需要创建一下仓库,在右上角可以新建仓库,进去就是git创建仓库的部分了。基本是一样的。

需要注意的是这里的分支模型,我们是一个企业,所以肯定不能选择单分支模型的,我们选择的是生产开发模型,如果我们选择的是开发/发布/缺陷分离模型,就会导致后面我们想基于某个分支创建其他分支是不可以的,因为选择这个分支之后,是将我们的分支模型固定了,自由发挥的空间不是很大。

此时就创建好了对应的仓库。

但是一个企业不能只有我们一个人吧,所以我们需要添加成员:

需要你的小伙伴通过链接或者是二维码就可以成功进入你的企业了。

企业成员有了,还需要项目人员吧?所以需要我们添加项目人员:

项目的添加成员部分就可以添加。

项目人员有了,开发成员得有吧?所以我们需要添加仓库开发人员:

代码仓库的这里,就可以添加对应的开发人员或者是测试人员等。

那么,简简单单试试Git Flow?

首先我们要基于Dev分支创建一个feature分支,毕竟是十分不推荐在Dev分支上进行开发的,所以新建:

新建成功之后,我们现在拥有三个分支,一个是feature分支,一个是dev一个是master,所以我们现在可以在feature分支上修改一下ReadMe文件,当成是代码开发:

当然了,为了方便,我们这里直接使用本地的IDE作为演示,实际是不可以在Gitee里面进行修改的。

然后左下角有一个提交,我们点击提交即可:

上方还需要我们保存一下。

此时对于master分支 dev分支是不知道有对应的修改的,所以在feature分支下需要请求代码评审,这里就就不能像我们当时学习那样,框的一下就自己提交了。

此时因为feature分支是基于dev分支创建的,自然是目标分支为dev,然后简单描述一下Issue即可:

在这里我们直接通过即可。

那么就可以直接进行评审了。

此时dev分支就合并成功了,本质上是开发人员自测通过了,所以需要基于dev分支新建一个Release分支,作为是测试人员的工作分支:

同样是在分支管理部分新加。

那么需要pull request,但是合并之后需要删除分支,因为这个分支只是作为测试存在。

此时master分支就完成了。

对于实际中的开发工作肯定是远比本文描述的复杂的,所以本文只是作为我们日后的一个热身罢了,各位开发者加油吧!


感谢阅读!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V笔记——显式同步

1. 前言 RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Explicit Synchronization(显示同步)。 2. 显示同步 显示同步指的是&#xff1a…

网络空间指纹:新型网络犯罪研判的关键路径

前言 新型网络犯罪是指利用计算机技术和互联网平台进行犯罪活动的一类犯罪行为。它涵盖了一系列使用网络和数字技术进行非法活动的行为,如网络钓鱼、网络诈骗、恶意软件攻击、黑客入侵、数据泄露、网络色情和社交网络犯罪等。 随着当前打击治理新型网络犯罪博弈态…

idea中,git提交时忽略某些本地修改.将文件从git暂存区移除

我们有时候在本地调试代码时,某些配置文件需要修改成本地环境中。当改完后,需要提交代码时,这些文件又不能推到git上。如下图: 当出现这种情况,我们每次都需要手动去将不需要提交的文件的对号去掉。文件多了后&#x…

dlib库-人脸检测

文章目录 一、介绍二、与OpenCv对比三、dlib库安装1.直接安装2.dlib库whl文件进行安装 四、代码实现五、总结 一、介绍 dlib库是一个适用于C和Python的第三方库。包含机器学习、计算机视觉和图像处理的工具包,被广泛的应用于机器人、嵌入式设备、移动电话和大型高性…

STM32L031F6P6基于CubeMX的串口通信调试笔记

用CubeMX创建项目 本实例用的PA14、PA13两个引脚,LPUART1。 对串口参数进行设置: 开启串口中断: 时钟源设置成内部高频时钟: 对项目进行设置: 生成代码: 在串口初始化函数中加入 __HAL_UART_ENA…

wps图标没有坐标轴标题怎么办?wps表格不能用enter下怎么办?

目录 wps图标没有坐标轴标题怎么办 一、在WPS PPT中添加坐标轴标题 二、在WPS Excel中添加坐标轴标题 wps表格不能用enter下怎么办 一、检查并修改设置 二、检查单元格保护状态 三、使用快捷键实现换行 wps图标没有坐标轴标题怎么办 一、在WPS PPT中添加坐标轴标题 插入…

基于Java微信小程序的高校教务管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Django学习-后台管理相关操作

admin配置步骤: 注册自定义的模型类: 代码: from django.contrib import admin from .models import Book, Author# Register your models here. admin.site.register(Book) admin.site.register(Author)模型管理器类(修改&#…

工程技术-中英文普刊合集

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网:https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿:由艾思科蓝支持在线投稿,请将文章全文投稿至艾思科蓝投稿系…

案例分析:Modbus设备如何通过MQTT网关连接阿里云IoT

物联网技术的发展,越来越多的传统工业控制系统需要与现代云平台集成,以便实现远程监控、数据分析等功能。Modbus协议作为工业控制领域的一种常见通讯协议,其设备通常需要转换为MQTT协议才能更好地与诸如阿里云IoT、华为云IoT、ThingsBoard等云…

pdf文件太大如何变小?

pdf文件太大如何变小?在处理PDF文件的过程中,文件大小往往成为了一个不可忽视的关键因素。庞大的文件不仅占据了宝贵的存储空间,还在文件传输过程中造成了时间上的延误,这无疑给工作效率带来了不小的挑战。特别是在电子邮件附件的…

突破干扰,无人机自动驾驶技术详解

突破干扰的无人机自动驾驶技术,是一个结合了多学科领域的复杂系统,旨在确保无人机在复杂电磁环境、人为干扰等条件下仍能自主、安全地完成飞行任务。以下是对该技术的详细解析: 一、技术概述 无人机自动驾驶技术通过集成传感器技术、人工智…

Axure基本元件库——基本元件、表单和菜单表格

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:认识和数据Axure基本元件库 主要内容:基本元件、表单元件和菜单表格 应用场景:原型绘制基本元件、页面组成和交互基础 正文…

网络爬虫中的几种数据存储方式(上篇)

本文的内容是介绍网络爬虫中的数据存储方式。大家都知道爬虫的最重要功能就是从网络中将数据提取出来。现在问题来了,那么提取出来的数据该何去何从,如果仅仅只是保存在内存当中,当程序结束后岂不是所有的内容都消失了?因此需要将…

大语言模型赋能病理AI,自动从报告文本中分类TNM分期|顶刊精析·24-10-17

小罗碎碎念 这篇文章介绍了一种名为BB-TEN(Big Bird – TNM staging Extracted from Notes)的方法,它能够自动从病理报告文本中分类TNM(肿瘤大小、区域淋巴结受累和远处转移)分期。 今天分享的这篇文章于2024-10-16发表…

elementUi el-table 表头高度异常问题

1、现象 在同一个页面通过状态切换不同table时&#xff0c;当从有合并标头行的table切换到无合并表头的table时&#xff0c;无合并表头的table的表头的高度异常了&#xff0c;如下图 切换后 2、解决 给每个el-table 加上一个唯一的key <el-table key"1"></…

大规模语言模型与生成模型:技术原理、架构与应用

大规模语言模型与生成模型&#xff1a;技术原理、架构与应用 个人主页&#xff1a;chian-ocean文章专栏 大规模语言模型与生成模型&#xff1a;技术原理、架构与应用1. 引言2. 大规模语言模型概述2.1 什么是大规模语言模型&#xff1f;2.2 常见的语言模型架构2.3 语言模型的技术…

在ESP-IDF环境中如何进行多文件中的数据流转-FreeRTOS实时操作系统_流缓存区“xMessageBuffer”

一、建立三个源文件和对应的头文件 建立文件名&#xff0c;如图所示 图 1-1 二、包含相应的头文件 main.h 图 2-1 mess_send.h mess_rece.h和这个中类似,不明白的大家看我最后面的源码分享 图2-2 三、声明消息缓存区的句柄 大家注意&#xff0c;在main.c中定义的是全局变…

Java 类和对象详解(上 )

个人主页&#xff1a; 鲤鱼王打挺-CSDN博客 Java专栏&#xff1a;https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…

github下载文件的两种方式(非git形式)

1.以下面的图为例 &#xff0c;可以直接点击右上方的绿色Code按键&#xff0c;在弹出的列表中选择Download Zip选项&#xff0c;即可下载。 2.如果下载的是单独的某一个文件&#xff0c;则可以按照下图的格式点击下图所示的那个下载的图标即可。