初识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分支就完成了。

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


感谢阅读!

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

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

相关文章

ubuntu查看系统版本命令

查看系统版本指令 在 Ubuntu 操作系统中,您可以使用多个命令来查看系统版本。以下是一些常用的命令: lsb_release -a 这个命令会显示详细的 Ubuntu 版本信息,包括发行版名称、版本号、代号等。lsb_release -acat /etc/os-release 这个命令会显…

基于SSM的的水电管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

5G工业路由器智能电网部署实录:一天内解决供电、网络

凌晨4:13,我被手机震动惊醒。变电站值班人员发来紧急消息:昨晚部署的SR800突然离线。我立即查看了STAR Device Manager平台,确认是设备A37号在3:47分失去连接。(key-iot.com/iotlist/sr800-3.html) 6:30到达变电站。检查SR800状态,发现是供电问题导致设备重启。这个老旧变电站…

pytorch训练和使用resnet

pytorch训练和使用resnet 使用 CIFAR-10数据集 训练 resnet resnet-train.py import torch import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim# 在CIFAR-10数据集中 # 训练集:包含50000张图像…

电影院订票选座小程序ssm+论文源码调试讲解

第2章 开发环境与技术 电影院订票选座小程序的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对电影院订票选座小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的&…

处理文件上传和进度条的显示(进度条随文件上传进度值变化)

成品效果图&#xff1a; 解决问题&#xff1a;上传文件过大时&#xff0c;等待时间过长&#xff0c;但是进度条却不会动&#xff0c;只会在上传完成之后才会显示上传完成 上传文件的upload.component.html <nz-modal [(nzVisible)]"isVisible" [nzTitle]"文…

python包以及异常、模块、包的综合案例(较难)

1.自定义包 python中模块是一个文件&#xff0c;而包就是一个文件夹 有这个_init_.py就是python包&#xff0c;没有就是简单的文件夹 包的作用&#xff1a;当我们的模块越来越多时&#xff0c;包可以帮助我们管理这些模块&#xff0c;包的作用就是包含多个模块&#xff0c;但包…

【命令操作】信创终端系统上timedatectl命令详解 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【命令操作】信创终端系统上timedatectl命令详解 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于如何在信创终端系统上使用timedatectl命令的详细介绍。timedatectl 是Linux系统中非常实用的时间管理工具&#xff0c;…

学习写作--polyGCL.md

POLYGCL: GRAPH CONTRASTIVE LEARNING VIA LEARNABLE SPECTRAL POLYNOMIAL filters 这篇工作的摘要和引言写的特别好&#xff08;不愧是ICLR spotlight&#xff09; 摘要 第一步&#xff0c;设定背景 Recently, Graph Contrastive Learning (GCL) has achieved significantl…

使用Flask实现本机的模型部署

前言 模型部署是指将大模型运行在专属的计算资源上&#xff0c;使模型在独立的运行环境中高效、可靠地运行&#xff0c;并为业务应用提供推理服务。其目标是将机器学习模型应用于实际业务中&#xff0c;使最终用户或系统能够利用模型的输出&#xff0c;从而发挥其作用。 一、设…

12 django管理系统 - 注册与登录 - 登录

为了演示方便&#xff0c;我就直接使用models里的Admin来演示&#xff0c;不再创建用户模型了。 ok&#xff0c;先做基础配置 首先是在base.html中&#xff0c;新增登录和注册的入口 <ul class"nav navbar-nav navbar-right"><li><a href"/ac…

黑马软件测试第一篇_Linux

Linux 操作系统 说明: 所有硬件设备组装完成后的第⼀一层软件, 能够使⽤用户使⽤用硬件设备的软件 即为操作系统 常见分类 桌⾯面操作系统: Windows/macOS/Linux移动端操作系统: Android(安卓)/iOS(苹果)服务器器操作系统: Linux/Windows Server嵌⼊入式操作系统: Android(底…

linux线程 | 同步与互斥 | 线程池以及知识点补充

前言&#xff1a;本节内容是linux的线程的相关知识。本篇首先会实现一个简易的线程池&#xff0c; 然后再将线程池利用单例的懒汉模式改编一下。 然后再谈一些小的知识点&#xff0c;比如自旋锁&#xff0c; 读者写者问题等等。 那么&#xff0c; 现在开始我们的学习吧。 ps:本…

吴恩达深度学习笔记(6)

正交化 为了提高算法准确率&#xff0c;我们想到的方法 收集更多的训练数据增强样本多样性使用梯度下降将算法使算法训练时间更长换一种优化算法更复杂或者更简单的神经网络利用dropout 或者L2正则化改变网络框架更换激活函数改变隐藏单元个数 为了使有监督机制的学习系统良…

ansible playbooks

文章目录 一&#xff0c;ansible剧本二&#xff0c;ansible playbooks主要特性三&#xff0c;yaml基本语法规则四&#xff0c;剧本playbooks的组成结构五&#xff0c;yaml编写1.示例2.运行playbook2.1 运行2.2 检查yaml文件的语法是否正确2.3 检查tasks任务2.3 检查生效的主机2…

maven创建父子项目

创建父类 创建子模块 添加文件夹 配置tomcat 参考 然后启动项目即可 参考 https://blog.csdn.net/gjtao1130/article/details/115000022

Linux——shell 编程基础

基本介绍 shell 变量 环境变量&#xff08;也叫全局变量&#xff09; 位置参数变量 预定义变量 运算符 条件判断 流程控制 if 单分支&多分支 case 语句 for循环 while 循环 read 读取控制台输入 函数 系统函数 basename 获取文件名 dirname 获取目录路径 自定义函数 综…

DataWhale10月动手实践——Bot应用开发task03学习笔记

一、工作流 1. 工作流的定义 工作流由多个节点组成&#xff0c;这些节点可以包括大语言模型&#xff08;LLM&#xff09;、代码模块、逻辑判断工具、插件等。每个节点需要不同的信息来执行其功能。工作流的核心含义是&#xff1a;对工作流程及其操作步骤之间的业务规则进行抽…

中国信通院联合中国电促会开展电力行业企业开源典型实践案例征集

自2021年被首次写入国家“十四五”规划以来&#xff0c;开源技术发展凭借其平等、开放、协作、共享的优秀创作模式&#xff0c;正持续成为推动数字技术创新、优化软件生产模式、赋能传统行业转型升级、助力企业降本增效的重要引擎。电力是国民经济的重要基础性产业&#xff0c;…

开源神器!CodeFormer:一键去除马赛克,高清修复照片视频

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; 微信公众号&#xff5c;搜一搜&…