【gitflow】 概念基本介绍

news2024/9/25 9:38:55

gitflow

简介

什么是gitflow?

我们大家都很会用git,但是我们很少去关心我们要怎么用branch和版本控制。

只知道master是第一个主分支,其他分支都是次要分支, 那你知道如下的问题如何回答吗?

  • 如何保证主分支的稳定性?
  • 如何开发新的feature?
  • 如何创建分支名称?分支多了如何管理?如何知道每个分支干嘛的呢?
  • 哪些分支合并了?
  • 哪些分支是release的分支?可以稳定使用的?
  • 如果稳定分支代码出现没有测出来的bug,如何创建分支快速修复?

这个就像写代码,要有个规范一样, 当然我们可以不按照规范来做,git同样能处理。但是定义一个科学的操作规范,往往能让效率事半功倍。

创始人的分享链接:

https://nvie.com/posts/a-successful-git-branching-model/

gitflow 是一种git分支模型,是由创始人Vincent Driessen 2010年创建的。这只是一种建议,在团队合作中,具体项目中要灵活应用,不用可守成规,觉得不合理的地方可以自行修正。

gitflow 流程图

我们来看下创始人最初的流程图:

在这里插入图片描述

我们来换个角度来理解

在这里插入图片描述

gitflow的核心要素是branch,通过branch来实现工作流。

主要分为两大类:

  • 主分支(Main Branches)
  • 辅助分支(supporting branches)

拓展开来:

主分支: Master Develop

辅助分支:Feature、Release、Hotfix

gitflow工作流如何使用

刚开始的时候,我们有个master分支,我们要基于master来创建develop

在这里插入图片描述

master

master分支上存放的是最稳定的版本,并且该分支的代码是随时可以让用户使用的代码,就是非常非常稳定的代码。当一个版本开发完成之后,交付给客户的时候,master上面的额代码也要被更新。同时,每次更新都要打上相应的tag。

任何人不允许在master上进行代码的直接push提交,只接受其他分支合入。原则上master分支必须是release的分支合过来的代码。

来源只能是:hotfix和release分支。不能是其他分支。

master一定是经过多轮测试,但是不能保证完全没有bug,所以引入hotfix分支,来修复未知bug

develop

develop是主开发分支,这个分支上被合并的代码始终是下一个版本需要加入的feature。这个分支可以合并一些feature。当要release的时候,就从这个分支上进行创建release分支。

合并到develop分支上的必须保证功能完整,不影响develop分支的正常运行。

在这里插入图片描述

feature

feature 分支又叫功能分支,一般命名方法feature/xxx,用来开发版本或者未来要发布新的功能或者探索新功能。(feature 分支功能要保证里面的commit 的粒度要非常细,避免和主分支脱节严重,应该大功能切成一个一个小功能来merge,而不是一次merge一个大的)

在这里插入图片描述

Release

这个分支又叫预发布分支,一般命名为 release/1.1.x 这个分支转为发布做准备。允许小量级的bug修复。

release分支只能从develop分支拉过来,用来修复一些bug。(不做feature相关的开发)

在这里插入图片描述

hotfix

hotfix 叫热修复分支,一般命名为hotfix/4.1.3 为固定某个版本进行修复,当master上遇到严重问题需要修复的时候,就要从master上指定tag拉取。这样做就是为了隔离feature开发和bug修复。

hotfix只能从master上拉去,测试通过之后合并会master和develop

在这里插入图片描述

总结

有些人觉得gitflow好用,有些人觉得gitflow太死板,太复杂,团队里面每个人都要遵守这套规则,会很麻烦。毕竟规则越复杂,用起来越难。所以创始人也建议团队根据实际情况调整策略。我觉得有以下几点值得注意:

  • 团队主要成员如果成员固定,并且训练有素,可以考虑用一下。团队人员如果太多,太杂,不建议。如果主要团队人员就1-2个人,也不建议。
  • 从时间点上来说,要将团队统一战线,比如master要开始release了,整个团队需要切到release分支去修复bug,并且坚决不允许有feature合入。大feature可以下一个版本进行合并。
  • release要全部测试人员测试完成,没有bug了,再合到master上。
  • 一定要保证master上面的有个稳定的代码源(这个是最重要的一点,如果达不到,产品化效果会很差)
  • 不同的团队保持并行开发,相互之间干扰要降到最低。

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

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

相关文章

vue3+ts封装axios 配置BASE_URL拦截器 单个接口的拦截 全局拦截器

1. config.ts 书写BASE_URL ( service/request/config.ts) BASE_URL书写的方式很多 1: 直接在axios.create里面写死 ,在打包或者测试的时候手动进行修改BASE_URL 2:新建一个文件 在文件里面判断当前的环境 进行赋值BASE_URL 3:定义.env文件 …

线程间同步

线程间资源竞争 int count 0;void * add(void *arg){int val,i;for(i 0;i< 5000;i ){val count;printf("%p: %d\n",pthread_self(),val);count val 1;}return nullptr; }int main(){pthread_t tida,tidb;pthread_create(&tida,NULL,add,NULL);pthread_c…

python爬虫进行AES解密遇到的问题

1、TypeError: Object type <class ‘str’> cannot be passed to C code 报错如下&#xff1a; File "C:\Python311\Lib\site-packages\Crypto\Util\_raw_api.py", line 143, in c_uint8_ptrraise TypeError("Object type %s cannot be passed to C cod…

【改进算法】混合鲸鱼WOA和BAT算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

0101B站学习视频发留言找小伙伴-实用小工具系列

文章目录 1 起因2 找方法3 bilibili_api4 实现5 知识点结语 1 起因 经常在B站看学习视频&#xff0c;但是一个人学习&#xff0c;偶尔在想&#xff0c;我学的怎么样&#xff1f;有没有用&#xff1f;有没有谁可以一起交流下&#xff1f;好在现在有互联网&#xff0c;可以极大的…

WiFi各协议理论速度

一、总览 二、11b到11g提升点 802.11g工作在2.4G频段下&#xff0c;能够支持OFDM和CCK两种调制方式&#xff0c;提供16-QAM、64-QAM、BPSK和QPSK四种编码方式&#xff0c;我们通常说的54Mbps速率就是在2.4G频段下&#xff0c;通过OFDM调制&#xff0c;采用64-QAM编码的情况下实…

表达式和语句

表达式 可以被求值的代码&#xff0c;并将其计算出一个结果 语句 一段可以执行的代码&#xff0c;是一个行为&#xff0c;例如分支语句和循环语句 三大流程控制语句 以前写的代码&#xff0c;写几句就从上往下执行 &#xff0c;---顺序结构 有时候要根据条件 选择执行代码…

Spring源码之PostProcessor解析

系列文章目录 文章目录 系列文章目录前言一、PostProcessor是什么二、PostProcessor的作用三、Spring框架中有哪些PostProcessor呢BeanPostProcessorBeanFactoryPostProcessorInstantiationAwareBeanPostProcessorDestructionAwareBeanPostProcessorMergedBeanDefinitionPostPr…

Pinia 和 Vuex ,理解这两个 Vue 状态管理模式

Pinia和Vuex一样都是是vue的全局状态管理器。其实Pinia就是Vuex5&#xff0c;只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia。 本文通过Vue3的形式对两者的不同实现方式进行对比&#xff0c;让你在以后工作中无论使用到Pinia还是Vuex的时候都能够游刃有余。 …

Linux下在日志中打印时间戳

1、背景介绍&#xff1a;在实验过程中需要记录任务运行情况&#xff0c;为此需要在日志中增加时间戳打印信息&#xff0c;方便事后查看。 2、实现方法 示例如下&#xff1a; #include <stdio.h> #include <time.h> #include<string.h>void print_debug_me…

如何在iPhone上用ChatGPT替换Siri

To use ChatGPT with Siri on an iPhone or iPad, get an OpenAI API key and download the ChatGPT Siri shortcut. Enter your API key in the shortcut setup and select the GPT model you want to use, then hit “Add Shortcut.” Trigger the shortcut manually first t…

FreeRTOS实时操作系统(二)系统文件代码学习

文章目录 前言系统配置任务创建任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程&#xff0c;涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置&#xff08;在FreeRTOSconfig.h&#xff09; “INCLUDE”&#xff1a;配置API函数…

【Java】catch里面抛出了异常finally里面的事务会提交吗?

文章目录 背景目前的代码直接实战演示单元测试总结 背景 我们公司的系统中有一个业务场景&#xff0c;需要第三方的账户数据同步到我们系统。 同步账号的同时&#xff0c;会将所有同步数据和是否成功记录到一张同步日志表中&#xff0c;方便排查问题和记录。 好了&#xff0c;…

window11系统CUDA、cuDNN 安装以及环境变量配置

文章目录 一&#xff0c;说明二&#xff0c;cuda的下载以及安装1. 确定自己电脑设备哪个版本cudaa. 点击左下角b. 点击左下角c.接着点击 组件 2. cuda的下载3. cuda的安装1. 双击 点击 ok2. 同意即可3. 这个随意哪个都行4.选择安装位置 接着下一步 三&#xff0c;cuda环境变量设…

Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决

Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决 问题&#xff1a; [INS-13001] 此操作系统不支持 Oracle 数据库问题原因解决方案 问题2&#xff1a;[INS-35180] 无法检查可用内存问题原因解决方案 问题&#xff1a; [INS-13001] 此操作系统不支持 Oracl…

Python面向对象编程-构建游戏和GUI 手把手项目教学(1.1)

总项目目标&#xff1a;设计一个简单的纸牌游戏程序&#xff0c;称为"Higher or Lower"&#xff08;高还是低&#xff09;。游戏中&#xff0c;玩家需要猜测接下来的一张牌是比当前牌高还是低。根据猜测的准确性&#xff0c;玩家可以得到或失去相应的积分。 项目1.1…

循环码的编码、译码与循环冗余校验

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 循环码的编码循环码…

实现 strStr

在一个串中查找是否出现过另一个串&#xff0c;这是KMP的看家本领。 28. 实现 strStr() 力扣题目链接 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&…

七、docker-compose方式运行Jenkins,更新Jenkins版本,添加npm node环境

docker-compose方式运行Jenkins&#xff0c;更新Jenkins版本&#xff0c;添加npm node环境 一、docker-compose方式安装运行Jenkins 中发现Jenkins版本有点老&#xff0c;没有node环境&#xff0c;本节来说下更新jenkins 及添加构建前端的node环境。 1. 准备好docker-compose…

算法刷题-双指针-二分法

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…