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

【CI/CD】图解六种分支管理模型

图解六种分支管理模型

任何一家公司乃至于一个小组织,只要有写代码的地方,就有代码版本管理的主场,初入职场,总会遇到第一个拦路虎 git 管理流程,但是每一个企业似乎都有自己的 git 管理流程,倘若我们能掌握常用的 git 分支管理模型,那么无论碰到什么样的 git 管理流程,只不过都是这些管理模型的衍生与简化而已。

1.Git Flow

著名大佬 Vincent Driessen 在《A successful Git branching model》一文提出了影响深远的 git 代码管理模型,现如今依然许多中大型企业在沿用,下面是他提出的流程图:

在这里插入图片描述
优点:分支管理严格,代码合并清晰,适合于中大型团队应用。
缺点:分支流程过多反而也是一种缺点。

2.GitHub Flow

GitHub 2011 2011 2011 年创建,遵循以下 6 6 6 条原则:

  • master 分支永远是随时可部署发布的。
  • 需求新增基于 master 分支,并创建一个语义化分支。
  • 定期推送本地分支到远端。
  • 合并到 master 需要提 PR
  • PR 一旦经过 code review 无误后即可合并到 master
  • master 一旦接收到合并请求,即可立即部署发布。

其大概的流程图如下:
在这里插入图片描述
优点:分支足够简单,且符合人类思维逻辑,适用于持续发布场景。
缺点:针对多版本产品线则不适用。

3.GitLab Flow

GitLab 2014 2014 2014 年提出 11 11 11 条最佳实践,其相对 GitHub 增加了环境分支,且代码必须由上游(master)向下游(staging)发展,并且针对持续发布和版本发布都提出了相应的准则,下面是其大致流程图:

在这里插入图片描述
优点:git 提交历史更加清晰、简洁与易读。
缺点:对开发人员的能力提出了更高的要求,当存在多产品线时,和 Git Flow 相比平分秋色。

4.TrunkBased

研发团队只在 master 分支进行功能开发,当达到发布的条件时,直接迁出一个只读分支发布,只读分支顾名思义就是不接收任何新代码合并,以及在只读分支上进行修改;当研发人员相对较多时则可以使用 可扩展版本,增加了功能分支,但是功能分支不超过两三天则必须要合并到 master 分支,其大致的流程图如下:

在这里插入图片描述
优点:简单清晰,单兵作战最佳选择,适合维护后期超稳定的项目。
缺点:不适用多版本共存的项目。

5.OneFlow

Adam Ruka 于 2017 年提出,可以简单的理解为 Git Flow 的简化版本,除了 develop 开发分支和最新发布 master 分支,其余皆是临时分支,一旦开发完成即可删除临时分支,其中具体细则可查看这里,下面是其大致流程图:

在这里插入图片描述
优点:单一版本首选,git 提交历史简介清晰易读。
缺点:不适合持续交付或持续部署的项目,也不适用多版本共存的项目。

6.AoneFlow

由阿里巴巴技术专家林帆基于 TrunkBasedGitFlow 提出的一种新改进,其主要分为三种分支类型:主干分支特性分支 以及 发布分支,并且提出了三个基本准则:

  • 主干创建特性分支,且不允许合并回主干分支。
  • 合并特性分支,形成发布分支。
  • 发布到线上正式环境后,合并相应的发布分支到主干,在主干添加标签,同时删除该发布分支关联的特性分支。

下面是其大致的流程图:

在这里插入图片描述
优点:灵活易用,通过组合生成分支往往可以实现多种高级玩法。
缺点:复杂度稍高,如果没有配套的工具规范往往会出现 无效分支 的出现。

7.总结

在这里插入图片描述

相关文章:

【CI/CD】图解六种分支管理模型

图解六种分支管理模型 任何一家公司乃至于一个小组织,只要有写代码的地方,就有代码版本管理的主场,初入职场,总会遇到第一个拦路虎 git 管理流程,但是每一个企业似乎都有自己的 git 管理流程,倘若我们能掌握…...

LeetCode105. 从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 文章目录 [105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/)一、题目二、题解 一、题目 给定两个整数数组 preorder 和 inorder ,其中 preo…...

编码技巧——Sentinel的blockHandler与fallback

本文介绍Sentinel的blockHandler与fallback的区别,背景是:发生限流时,配置的sentinel的blockhandler没有生效而fallback生效了;排查原因,从而给出Sentinel配置异常降级和限流降级的代码写法; 在查看源码前…...

最新成果展示:GaN基Micro-LED热学模型数据库的开发及应用

由于GaN基Micro-LED表面积-体积比增加,其在热学方面的性质有别于大尺寸的LED,如缺陷复合导致的热效应将在发光区域中产生诸多“热”点,导致发光波长不均匀,这将影响后期显示系统的成像稳定性。针对上述问题,天津赛米卡…...

【Vue3】动态组件

动态组件的基本使用 动态组件(Dynamic Components)是一种在 Vue 中根据条件或用户输入来动态渲染不同组件的技术。 在 Vue 中使用动态组件,可以使用 元素,并通过 is 特性绑定一个组件的名称或组件对象。通过在父组件中改变 is 特…...

Java超级玛丽小游戏制作过程讲解 第五天 创建并完成常量类04

//加载障碍物 try {obstacle.add(ImageIO.read(new File(path"brick.png")));obstacle.add(ImageIO.read(new File(path"soil_up.png")));obstacle.add(ImageIO.read(new File(path"soil_base.png"))); } catch (IOException e) {e.printStackTr…...

设置浏览器兼容

浏览器兼容 css兼容 cursor定义手型  Firefox不支持hand,IE支持pointer  解决方法:统一使用pointercss透明  IE:filter:progid:DXImageTransform.Microsoft.Alpha(style0,opacity60)  Firefox:opacity:0.6  解决…...

Java # List

ArrayList<>() import java.util.ArrayList; // 引入 ArrayList 类ArrayList<E> objectName new ArrayList<>();  // 初始化 常用方法 方法描述add()将元素插入到指定位置的 arraylist 中addAll()添加集合中的所有元素到 arraylist 中clear()删除 arrayl…...

git原理与使用

目录 引入基本操作分支管理远程操作标签管理 引入 假设你的老板要你设计一个文档&#xff0c;当你设计好了&#xff0c;拿给他看时&#xff0c;他并不是很满意&#xff0c;就要你拿回去修改&#xff0c;你修改完后&#xff0c;再给他看时&#xff0c;他还是不满意&#xff0c;…...

【C语言题解】将一句话的单词进行倒置,标点不倒置。

题目描述&#xff1a;将一句话的单词进行倒置&#xff0c;标点不倒置。比如 “I like beijing.”&#xff0c;经过处理后变为&#xff1a;“beijing. like I”。 文章目录 原题目题目描述&#xff1a;输入描述&#xff1a;输出描述&#xff1a;题目链接&#xff1a; 整体思路分…...

Postman 的简单使用

什么是Postman 在程序开发中用于调试网络程序或者跟踪网页请求。可以对网页进行简单的基本信息调试。Postman最早是作用chrome浏览器插件存在的&#xff0c;但是2018年初Chrome停止对Chrome应用程序的支持。所以现在Postman提供了独立的安装包&#xff0c;不再依赖于Chrome浏览…...

在CentOS7安装部署GitLab服务

CentOS 7 安装 Gitlab 官方安装教程&#xff1a;https://about.gitlab.com/install/ 参考安装教程&#xff1a;https://developer.aliyun.com/article/74395 安装配置 Step1&#xff1a;配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo存入以下内容&#xff1a; [gitlab-c…...

订单系统就该这么设计,稳的一批~

订单功能作为电商系统的核心功能&#xff0c;由于它同时涉及到前台商城和后台管理系统&#xff0c;它的设计可谓是非常重要的。就算不是电商系统中&#xff0c;只要是涉及到需要交易的项目&#xff0c;订单功能都具有很好的参考价值&#xff0c;说它是通用业务功能也不为过。今…...

Agents改变游戏规则,亚马逊云科技生成式AI让基础模型加速工作流

最近&#xff0c;Stability AI正式发布了下一代文生图模型——Stable Diffusion XL 1.0这次的1.0版本是Stability AI的旗舰版生图模型&#xff0c;也是最先进的开源生图模型。 在目前的开放式图像模型中&#xff0c;SDXL 1.0是参数数量最多的。官方表示&#xff0c;这次采用的…...

详细教程:如何搭建废品回收小程序

废品回收是一项环保举措&#xff0c;通过回收和再利用废弃物品&#xff0c;可以减少资源浪费和环境污染。近年来&#xff0c;随着智能手机的普及&#xff0c;小程序成为了推广和运营的重要工具。本文将详细介绍如何搭建一个废品回收小程序。 1. 进入乔拓云网后台 首先&#xf…...

什么是双亲委派机制?

什么是双亲委派机制&#xff1f; Parent Delegation Model &#xff0c;直译过来可能叫做父级委托模型更容易理解 类的加载过程 Java 编译器将 Java源文件编译成.class 文件再由 JVM 加载 .class 文件到内存中JVM 装载完成后得到一个 Class 字节码对象拿到字节码对象之后 &a…...

Mageia 9 RC1 正式发布,Mandriva Linux 发行版的社区分支

导读Mageia 9 首个 RC 已发布。公告写道&#xff0c;自 2023 年 5 月发布 beta 2 以来&#xff0c;Mageia 团队一直致力于解决许多顽固问题并提供安全修复和新特性。 新版本的控制中心添加了用于删除旧内核的新功能&#xff0c;该功能在 Mageia 9 中默认自动启用&#xff0c;用…...

ChatGPT: 人机交互的未来

ChatGPT: 人机交互的未来 ChatGPT背景ChatGPT的特点ChatGPT的应用场景结论 ChatGPT ChatGPT是一种基于大数据和机器学习的人工智能聊天机器人模型。它由国内团队发明、开发&#xff0c;并被命名为Mental AI。ChatGPT的目标是通过模拟自然对话的方式&#xff0c;提供高效、智能…...

Linux 常用操作命令

Linux简介及Ubuntu安装 Linux&#xff0c;免费开源&#xff0c;多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian 安装VMware或VirtualBox虚拟机。具体安装步骤&#xff0c;找百度。 再安装Ubuntu。具体安装步骤&#xff0c;找百度。 常用指令 ls  …...

24届近5年重庆邮电大学自动化考研院校分析

今天给大家带来的是重庆邮电大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、重庆邮电大学 学校简介 重庆邮电大学简称"重邮"&#xff0c;坐落于直辖市-重庆市&#xff0c;入选国家"中西部高校基础能力建设工程”、国家“卓越工程师教育培养计划…...

ElevenLabs希伯来文语音合成:从API调用失败到99.2%自然度达标的7步生产级优化流程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs希伯来文语音合成&#xff1a;从API调用失败到99.2%自然度达标的7步生产级优化流程 ElevenLabs 官方虽未明确标注希伯来语&#xff08;he-IL&#xff09;为“fully supported”&#xff0c;但…...

别再只盯着图片了!用3DCNN处理视频动作识别,从原理到代码实战(PyTorch版)

3DCNN实战&#xff1a;从视频动作识别到PyTorch代码实现 当监控摄像头捕捉到一场突如其来的争执&#xff0c;或是体育赛事中运动员的关键动作&#xff0c;传统图像识别技术往往力不从心。这些场景中的信息不仅存在于每一帧画面里&#xff0c;更隐藏在帧与帧之间的动态变化中——…...

基于ChatGPT与飞书开放平台构建企业级智能聊天机器人实践指南

1. 项目概述&#xff1a;当ChatGPT遇上飞书&#xff0c;打造你的专属智能工作伙伴 最近在折腾一个挺有意思的项目&#xff0c;叫“chatgpt-for-chatbot-feishu”。简单来说&#xff0c;这就是一个桥梁&#xff0c;一个能让OpenAI的ChatGPT模型&#xff0c;直接接入到飞书&…...

深入GD32 CAN FD驱动层:从寄存器配置到ISO 15765协议栈的实战解析

深入GD32 CAN FD驱动层&#xff1a;从寄存器配置到ISO 15765协议栈的实战解析 在车载电子与工业控制领域&#xff0c;CAN FD协议正逐步取代传统CAN总线&#xff0c;成为高速数据传输的新标准。GD32系列MCU凭借其出色的性价比和丰富的外设资源&#xff0c;成为许多嵌入式开发者的…...

终极英雄联盟换肤工具:R3nzSkin国服特供版完整使用教程

终极英雄联盟换肤工具&#xff1a;R3nzSkin国服特供版完整使用教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服免费体验所有皮肤…...

Pinia Colada:革命性Vue数据获取层的完整入门指南

Pinia Colada&#xff1a;革命性Vue数据获取层的完整入门指南 【免费下载链接】pinia-colada &#x1f379; The smart data fetching layer for Vue 项目地址: https://gitcode.com/gh_mirrors/pi/pinia-colada Pinia Colada是Vue生态系统中一款革命性的数据获取层解决…...

MSP430铁电超值系列MCU:25美分实现25种外设的嵌入式设计实战

1. 项目概述&#xff1a;为什么是MSP430铁电超值系列&#xff1f;在嵌入式开发的广阔世界里&#xff0c;选型往往是项目成败的第一步。面对琳琅满目的微控制器&#xff08;MCU&#xff09;&#xff0c;工程师们常常在性能、成本、功耗和开发便利性之间反复权衡。今天我想和大家…...

5分钟学会无损视频修复:untrunc让损坏MP4/MOV文件瞬间复活

5分钟学会无损视频修复&#xff1a;untrunc让损坏MP4/MOV文件瞬间复活 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否经历过重要视频突然无法播放的绝望时刻…...

如何轻松掌握res-downloader:高效下载网络资源的终极指南

如何轻松掌握res-downloader&#xff1a;高效下载网络资源的终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾…...

Arduino ESP32终极开发指南:从硬件抽象到物联网实战

Arduino ESP32终极开发指南&#xff1a;从硬件抽象到物联网实战 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 ESP32作为物联网开发领域的明星芯片&#xff0c;以其强大的…...