当前位置: 首页 > news >正文

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

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


感谢阅读!

相关文章:

初识git · 有关模型

目录 前言: 有关开发模型 前言: 其实文章更新到这里的时候,我们已经学习了可以满足我们日常生活中的基本需求的指令了,但是为什么要更新本篇文章呢?是因为实际生活中我们对于开发工作,运维工作&#xff…...

基于SpringBoot+Vue+uniapp的海产品加工销售一体化管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

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

解锁机器人视觉与人工智能的潜力,从“盲人机器”改造成有视觉能力的机器人(下)

机器视觉产业链全景回顾 视觉引导机器人生态系统或产业链分为三个层次。 上游(供应商) 该机器人视觉系统的上游包括使其得以运行的硬件和软件提供商。硬件提供商提供工业相机、图像采集卡、图像处理器、光源设备(LED)、镜头、光…...

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…...

用Spring AI 做智能客服,基于私有知识库和RAG技术

Java智能客服系统运用RAG技术提升答疑精准度 基于Spring ai 的 RAG(检索增强生成)技术,Java智能客服系统能够利用私有知识库中的信息提供更准确的答疑服务。 它的核心思路是: 首先,将客服QA以Word形式导入到系统中&…...

TemporalBench:一个专注于细粒度时间理解的多模态视频理解的新基准。

2024-10-15,由威斯康星大学麦迪逊分校、微软研究院雷德蒙德等机构联合创建了TemporalBench,它通过大约10K个视频问答对,提供了一个独特的测试平台,用以评估各种时间理解和推理能力,如动作频率、运动幅度、事件顺序等。…...

网友提问:网上申请流量卡不通过怎么办?

网上申请流量卡不通过怎么办?网上办理流量卡不通过,说明你不符合办理此套餐的要求,可以选择其他套餐,或者其他运营商的流量卡申请试试。 我们不管是在京*、淘*、拼**哪个网站申请的流量卡,提交的申请信息都是由运营商…...

JavaWeb 22.Node.js_简介和安装

有时候,后退原来是向前 —— 24.10.7 一、什么是Node.js Node.js 是一个于 Chrome V8 的 JavaScript 运行时环境,可以使 JavaScript 运行在服务器端。使用 Node.js,可以方便地开发服务器端应用程序,如 Web 应用、API、后端服务&a…...

APIJSON的使用

APIJSON是一个用于简化后端接口开发的工具&#xff0c;在Java中可以按照以下步骤使用&#xff1a; 1. 引入依赖 在Java项目中&#xff0c;需要引入APIJSON的相关依赖。如果使用Maven&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId…...

简单三步完成 Telegram 生态的 Web3 冷启动

在竞争激烈的 Web3 领域&#xff0c;强有力的启动往往能决定成败。Telegram 无疑当下最火热的流量池&#xff0c;是很多 Web3 项目冷启动阶段的必选项。 但眼看着好多项目在 Telegram 生态火速获取百万级甚至千万级别的用户&#xff0c;自己的项目要怎么开始做增长&#xff0c;…...

Go Wails 学习笔记:创建第一个项目

文章目录 1. 安装 Wails2. 创建 Wails 项目3. 项目结构4. 运行项目5. 构建项目6. 部署和发布总结 Wails 是一个用于构建跨平台桌面应用程序的框架&#xff0c;允许开发者使用前端技术&#xff08;如 HTML、CSS、JavaScript&#xff09;以及 Go 语言来开发桌面应用。本文基于官方…...

Postman使用-基础篇

前言 本教程将结合业界广为推崇和使用的RestAPI设计典范Github API&#xff0c;详细介绍Postman接口测试工具的使用方法和实战技巧。 在开始这个教程之前&#xff0c;先聊一下为什么接口测试在现软件行业如此重要&#xff1f; 为什么我们要学习Postman&#xff1f; 现代软件…...

LeetCode 202.快乐数

LeetCode 202.快乐数 C 思路&#xff1a; 用快慢指针来进行解答&#xff0c;可以将其看做一个回环链表&#xff0c;慢指针完成一次平方和操作&#xff0c;快指针完成两次平方和操作&#xff0c;当快慢指针相遇时&#xff0c;判断快慢指针是否为1(为1以后无论怎么取平方和都会为…...

Redis-03 持久化(RDB, AOF,混合持久化)及原理

1&#xff0c;持久化 Redis的持久化是必须的&#xff0c;当Redis服务宕机后&#xff0c;如果没有持久化&#xff0c;重启服务后redis中的数据都将丢失&#xff0c;所有的数据操作都将直连数据库&#xff0c;系统性能会大幅降低&#xff0c;所以在使用Redis做缓存服务时必须持久…...

TikTok账号策略:IP和网络环境的要求分析

在当今社交媒体迅猛发展的时代&#xff0c;TikTok作为一款短视频平台&#xff0c;凭借其独特的算法和庞大的用户基础&#xff0c;吸引了越来越多的内容创作者和营销人员。成功地运营一个TikTok账号&#xff0c;除了优质的内容创作外&#xff0c;良好的IP和网络环境也至关重要。…...

vue后台管理系统从0到1(5)

文章目录 vue后台管理系统从0到1&#xff08;5&#xff09;完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1&#xff08;5&#xff09; 接上一期&#xff0c;我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见&#xff0c;这一个侧边栏是符合我们…...

OpenAI的新功能Canvas,效果还不错

时隔两年&#xff0c;ChatGPT终迎来界面全新升级&#xff01; 这一次&#xff0c;OpenAI官宣推出类似 Anthropic 的 Artifacts 的界面交互功能 canvas&#xff0c;并称这是一种使用 ChatGPT 写作和编程的新方式。不论是写作&#xff0c;还是编码&#xff0c;都可以开启全新的交…...

了解一些常用的Javascript对象方法

javascript 的对象包含许多有用的方法&#xff0c;可以帮助开发人员轻松操作对象。让我们通过简短的解释和示例来了解一些最重要的内容 object.create()object.assign()object.keys()object.values()object.entries()object.freeze()object.seal()object.preventextensions()o…...

【知识科普】GraphQL一个强大的API查询语言

文章目录 概述&#x1f4da; GraphQL 的类型系统是如何工作的&#xff1f;&#x1f50d; 能否举例说明 GraphQL 的类型系统在实际应用中是如何工作的&#xff1f;位置步骤 1: 定义类型步骤 2: 实现解析器步骤 3: 客户端查询步骤 4: 执行查询 &#x1f6e0;️ 在实际开发中&…...

Spring Boot 整合达梦

Maven 依赖 <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.2.192</version></dependency> yml配置 datasource:master:url: jdbc:dm://192.168.211.113:30236username: WE…...

Vue.js 组件开发基本步骤

Vue.js 是一个构建用户界面的渐进式框架&#xff0c;它被设计为能够轻松地被集成进项目的部分功能&#xff0c;或者用于构建完整的前端应用。组件化是 Vue.js 的核心概念之一&#xff0c;它允许开发者将界面拆分成独立、可复用的组件&#xff0c;每个组件负责应用中的一小部分功…...

博客搭建之路:hexo使用next主题渲染流程图

文章目录 hexo使用next主题渲染流程图 hexo使用next主题渲染流程图 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 next主题的配置文件中搜索找到mermaid&#xff0c;把enable配置改为true mermaid:enable: true# Available themes: default | dark | forest | neutraltheme: de…...

【数据结构与算法】线性表顺序存储结构

文章目录 一.顺序表的存储结构定义1.1定义1.2 图示1.3结构代码*C语言的内存动态分配 二.顺序表基本运算*参数传递2.1建立2.2初始化(InitList(&L))2.3销毁(DestroyList(&L))2.4判断线性表是否为空表(ListEmpty(L))2.5求线性表的长度(ListLength(L))2.6输出线性表(DispLi…...

Unix Standardization and Implementations

Unix标准化 在Unix未制定较为完备的标准时&#xff0c;各个平台的系统调用方式各异&#xff0c;所开发出的应用程序存在可移植性差的特点&#xff0c;因此人们呼吁指定一套Unix标准来规范接口&#xff0c;增加应用程序的可移植性。所谓Unix标准即适用于Unix环境下的一系列函数…...

Windows 与 Java 环境下的 Redis 利用分析

1 前言 在最近的一次攻防演练中&#xff0c;遇到了两个未授权访问的 Redis 实例。起初以为可以直接利用&#xff0c;但后来发现竟然是Windows Java (Tomcat)。因为网上没有看到相关的利用文章&#xff0c;所以在经过摸索&#xff0c;成功解决之后决定简单写一写。 本文介绍了…...

机器视觉系统硬件组成之工业相机篇

工业相机是一种非常重要的机器视觉器件&#xff0c;它能够将被采集的图像信息通过电路转换成电信号&#xff0c;再通过模数转换器&#xff08;ADC&#xff09;将其转化为数字信号&#xff0c;最后以标准的视频信号输出。工业相机在机器视觉领域得到了广泛应用&#xff0c;包括质…...

离线安装bitnami-gitlab8.8.4+汉化

注意&#xff1a; 常规安装gitlab需要联网&#xff0c;而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab&#xff0c;两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录&#xff0c;因为…...

亚马逊日本站推出AI日语listing功能,Listing一键发布,轻松无忧!

随着大数据与人工智能技术的成熟&#xff0c;AI在电商的应用也越来越多&#xff0c;各大电商平台都在陆续引进AI人工智能&#xff0c;有客服方面的&#xff0c;也有发布Listing方面的。 10月17日消息&#xff0c;亚马逊日本站近日宣布推出一项支持日语的人工智能listing功能&am…...

Golang | Leetcode Golang题解之第475题供暖器

题目&#xff1a; 题解&#xff1a; func findRadius(houses, heaters []int) (ans int) {sort.Ints(houses)sort.Ints(heaters)j : 0for _, house : range houses {dis : abs(house - heaters[j])for j1 < len(heaters) && abs(house-heaters[j]) > abs(house-…...

【Vue】Vue3.0 (十二)、watchEffect 和watch的区别及使用

上篇文章&#xff1a; 【Vue】Vue3.0 &#xff08;十二&#xff09;、watch对ref定义的基本类型、对象类型&#xff1b;reactive定义的对象类型的监视使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&…...