当前位置: 首页 > 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…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...