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

Git Flow困境逃脱指南

本来来自极狐GitLab 资源中心,原文链接:https://resources.gitlab.cn/articles/020183ba-cfc0-4917-b901-248acdcfc92f。

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

Git 简化了分支和合并,使得软件开发团队从 SVN 等其他源码控制工具中脱离出来,采用工作流来简化开发。然而,从其他版本控制系统转移到 Git 的组织可能难以确定有效的工作流程。极狐GitLab Flow 通过将 Git 工作流与议题跟踪系统集成,创造了一种无缝的软件开发方法。

有时候,你可能拥有 “过多” 的好东西。Git flow 当然也是如此,这是一个著名的软件开发工作流程,它提供了多种选择,但却会让用户陷入困境。

为了消除容易引起混乱的复杂性、简化开发流程,我们推出了极狐GitLab Flow。极狐GitLab Flow 为 Git 工作引入了议题跟踪功能,简化了流程,消除了混乱。

极狐GitLab 公众号后台回复新手指南获取极狐GitLab 新手指南一份。

Git flow的问题


要想了解极狐GitLab Flow 的工作原理,不妨先看看它试图解决的问题。在 Git flow 中,有两个主要的痛点,都涉及到不必要的分支切换。

Git flow 强制开发者使用develop分支而不是master分支。因为大多数工具都默认使用 master,所以涉及到大量的分支切换。另一个让人烦恼的地方是 hotfix 和release分支,这对大多数组织来说显得过于繁琐,而对实践持续交付(CD)的公司来说则完全没有必要。

这让我们想到了极狐GitLab Flow —— 一个让一切都变得简单和包容的工作流程。

极狐GitLab Flow:一个简化的分支策略


极狐GitLab Flow 将特性驱动开发和特性分支与议题跟踪相结合。极狐GitLab Flow 将 Git 工作流程与议题跟踪系统整合在一起,提供了一种简单、透明、高效的 Git 工作方式。

极狐GitLab Flow 是一种让代码和议题跟踪器之间的关系更加透明的方式。代码库的每一次修改都是从议题跟踪系统中的一个议题开始的。当你完成编码或想要讨论代码时,你可以打开一个 Merge Request (合并请求)。当代码审核完成后,审核员会将该分支合并到 Master 中。通过使用 GitLab 工作流,团队可以通过将主分支合并到production分支来部署代码,同时可以快速识别生产环境中的代码版本,使他们能够快速识别哪些代码在生产中。在这个工作流程中,提交只流向下游,确保所有的东西在全面的环境中测试。

极狐GitLab Flow 避免了 Git flow 所伴随的发布、标记和合并的额外开销。

简而言之,极狐GitLab Flow:

所有的功能和修正都会先进入 master;
允许production或stable的分支;
错误修复/快速修复补丁是从 master 中拣选(cherry-picked)出来的。

分解软件开发的10个阶段


极狐GitLab Flow 将构思推进到生产阶段的方式,并让每个人都能了解所需信息并提高工作效率。我们确定了开发过程中必须经历的 10 大关键阶段,以使软件能够投入生产。极狐GitLab Flow 可以轻松地支持所有阶段进行核算,同时继续提供开发生命周期的全面可见性。

广义上讲,极狐GitLab Flow 主要分为三个领域:feature (特性)分支、production (生产)分支和release (发布)分支。

feature分支是实际开发工作发生的地方。开发者创建一个针对功能或 bug 修复的分支,并在那里完成所有工作,而不是在 master 分支上。一旦工作完成,开发人员就创建一个 Merge Request (合并请求),将 feature 分支的内容合并到 master 分支。

production分支本质上是一个整体–一个单一的长期运行的生产发布分支,而不是单个分支。可以为每个可部署的版本创建一个标签,以便跟踪这些细节。

最后,如果你向客户发布软件,那么release分支是关键。每发布一个新版本,你都会从master创建一个稳定分支,并决定一个标签。如果你需要做一个补丁发布,一定要拣选(cherry-pick)出关键的 bug 修复,不要直接提交到稳定分支。

遵循准则


想让极狐GitLab Flow 发挥最大的作用?这里有几条准则强调了测试的重要性,即使在CI环境中也是如此。

测试所有的 Commits (提交)。不要等到所有的东西都合并到master分支后才进行测试。每次提交都进行测试,以便在过程中更早发现问题。
在所有的 Commits (提交)上运行一次全部的测试用例,即使你必须并行运行测试。
[代码审查]先于[合并到master]。不要指望一周结束前的测试查出所有的问题。随着提交进行代码审核,这样更容易查出问题,其他同事也可以集思广益提出解决办法。

极狐GitLab Flow有什么好处?


极狐GitLab Flow 提供了一种简单、透明、高效的 Git 工作方式。使用极狐GitLab Flow,开发者可以在不同的环境中协作并维护多个版本的软件。极狐GitLab Flow 减少了发布、标记和合并的开销(这是其他类型 Git 工作流程中常见的挑战),创造了一种更简单的代码部署方式。提交流向下游,确保每一行代码都在所有环境中得到测试。任何规模的团队都可以使用极狐GitLab FLow,它具有适应各种需求和挑战的灵活性。

相关文章:

Git Flow困境逃脱指南

本来来自极狐GitLab 资源中心,原文链接:https://resources.gitlab.cn/articles/020183ba-cfc0-4917-b901-248acdcfc92f。 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff…...

MySQL的sql_mode模式简介

前言 今天同事使用数据库时报错,排查问题时发现配置文件里的sql_mode配置被人注释了,所以通过查询资料对这个配置进行了下了解。 介绍 mysql为了支持在不同的环境下运行,允许我们给它设置不同的运行模式(sql_mode)。 不同的运行模式&#…...

性能优化-如何爽玩多线程来开发

前言 多线程大家肯定都不陌生,理论滚瓜烂熟,八股天花乱坠,但是大家有多少在代码中实践过呢?很多人在实际开发中可能就用用Async,new Thread()。线程池也很少有人会自己去建,默认的随便用用。在工作中大家对…...

非关系型数据库-----------Redis的主从复制、哨兵模式

目录 一、redis群集有三种模式 1.1主从复制、哨兵、集群的区别 1.1.1主从复制 1.1.2哨兵 1.1.3集群 二、主从复制 2.1主从复制概述 2.2主从复制的作用 ①数据冗余 ②故障恢复 ③负载均衡 ④高可用基石 2.3主从复制流程 2.4搭建redis主从复制 2.4.1环境准备 2.4…...

使用docx4j转换word为pdf处理中文乱码问题

word转pdf 实现方法 mavendocx4j版本自己酌情升级 实现方法 import org.docx4j.Docx4J; import org.docx4j.fonts.IdentityPlusMapper; import org.docx4j.fonts.Mapper; import org.docx4j.fonts.PhysicalFonts; import org.docx4j.openpackaging.packages.WordprocessingMLP…...

【引子】C++从介绍到HelloWorld

C从介绍到HelloWorld 一、C的介绍1. 简介2. 应用场景3. C的标准![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3efb0f207f647729b92c0b5bcd4b330.png)4. C的运行过程 二、Visual Studio的安装1. 什么是Visual Studio2. Visual Studio的安装 三、完成HelloWorld1.…...

Django检测到会话cookie中缺少HttpOnly属性手工复现

一、漏洞复现 会话cookie中缺少HttpOnly属性会导致攻击者可以通过程序(JS脚本等)获取到用户的cookie信息,造成用户cookie信息泄露,增加攻击者的跨站脚本攻击威胁。 第一步:复制URL:http://192.168.43.219在浏览器打开,…...

2024数字城市建设博览会:一站式平台,满足多元需求

2024数字城市建设博览会:引领未来城市发展的风向标 2024年,一场前所未有的盛会——数字城市建设博览会暨交流大会,将在雄安这座未来之城拉开帷幕。本次大会不仅是数字经济全产业链的精英集结,更是一场汇聚了众多优质项目和丰富客…...

iOS 17.5系统或可识别并禁用未知跟踪器,苹果Find My技术应用越来越合理

苹果公司去年与谷歌合作,宣布将制定新的行业标准来解决人们日益关注的跟踪器隐私问题。苹果计划在即将发布的 iOS 17.5 系统中加入这项提升用户隐私保护的新功能。 科技网站 9to5Mac 在苹果发布的 iOS 17.5 开发者测试版内部代码中发现了这项反跟踪功能的蛛丝马迹…...

关于搭建elk日志平台

我这边是使用docker compose进行的搭建 所以在使用的时候 需要自行提前安装docker以及dockercompose环境 或者从官网下载对应安装包也可以 具体文章看下一章节:【ELK】搭建elk日志平台(使用docker-compose),并接入springboot项目...

【全套源码教程】基于SpringBoot+MyBatis+Vue的流浪动物救助网站的设计与实现

目录 前言 需求分析 可行性分析 技术实现 后端框架:Spring Boot 持久层框架:MyBatis 前端框架:Vue.js 数据库:MySQL 功能介绍 前台界面功能介绍 动物领养及捐赠 宠物论坛 公告信息 商品页面 寻宠服务 个人中心 购…...

Word wrap在计算机代表的含义(自动换行)

“Word wrap”是一个计算机术语,用于描述文本处理器在内容超过容器边界时自动将超出部分转移到下一行的功能。在多种编程语言和文本编辑工具中,都有实现这一功能的函数或选项。 在编程中,例如某些编程语言中的wordwrap函数,能够按…...

室友打团太吵?一条命令让它卡死

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:更多干货,请关注专栏《网络安全自学教程》 SYN Flood 1、hping3实现SYN Flood1.1、主机探测1.2、扫描端…...

RabbitMQ3.13.x之八_RabbitMQ中数据文件和目录位置

RabbitMQ3.13.x之_RabbitMQ中数据文件和目录位置 文章目录 RabbitMQ3.13.x之_RabbitMQ中数据文件和目录位置1. 概述2. 覆盖位置1. 路径和目录名称限制2.所需的文件和目录权限 3. 环境变量4. Linux、macOS、BSD上的默认位置5. Windows上的默认位置6. 通用二进制构建默认值 1. 概…...

仿抖音短视频直播带货刷一刷商城社交电商源码系统小程序APP开发

系统功能介绍 一、短视频与社交功能 短视频浏览与互动 用户可以浏览仿抖音风格的短视频,包括评论、点赞、进入视频发布者的主页,以及加关注等功能。系统会显示用户关注的好友列表,方便用户快速查看好友发布的视频。用户还可以浏览同城视频&…...

Vue - 你知道Vue组件中的data为什么是一个函数吗

难度级别:中高级及以上 提问概率:80% 在Vue项目中,App.vue下的每个子组件都会生成一个单独的Vue实例对象,但这些子对象都是通过通过vue.extend方法创建而来的,也就是说我们平时在项目中所定义的Vue组件,都有一个相同的父类对象。这样也就…...

MUX VLAN

目录 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.使用Hybrid端口实现网络需求 3.使用Mux VLAN实现网络需求 原理概述 在实际的企业网络环境中,往往需要所有的终端用户都能够访问某些特定的服务器,而用户之间的访问控制规则则比较复杂。在…...

漫谈:“标准”是一种幻觉 C++语言标准的意义

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 “标准”这个词很迷惑&#xf…...

【Wbpack原理】基础流程解析,实现 mini-webpack

【Wbpack原理】基础流程解析,实现 mini-webpack ⛄:webpack 对前端同学来说并不陌生,它是我们学习前端工程化的第一站,在最开始的 vue-cli 中我们就可以发现它的身影。我们的 vue/react 项目是如何打包成 js 文件并在浏览器中运行…...

Debian 安装 python 3.9.6

安装相关依赖 sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev 下载Python 源码 wget https://mirrors.aliyun.com/python-release/source/Py…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...