Git 分支策略

ops/2025/1/20 19:59:13/

在这里插入图片描述

文章目录

    • 1. Git Flow
    • 2. GitHub Flow
    • 3. GitLab Flow
    • 4. Trunk-Based Development
    • 5. Release Flow
    • 分支最佳实践

Git 分支策略是组织和管理工作特性开发、协作和版本控制的技术。选择合适的策略取决于团队规模、项目需求和部署需求。以下是常见的 Git 分支策略:

1. Git Flow

适用于有计划发布周期的项目的强大且流行的策略。

分支:

  • 主分支(Master):包含稳定、可生产的代码。
  • 开发分支(Develop):作为特性集成分支;这里是准备下一个发布的地方。
  • 特性分支(Feature Branches):为单个特性或任务创建,从 develop 分支出来。
  • 发布分支(Release Branches):为准备发布创建,从 develop 分支出来。
  • 热修复分支(Hotfix Branches):用于修复生产中的关键问题,从 main 分支出来。

流程:

  1. 完成后,特性分支合并到 develop。
  2. 当 develop 稳定时,创建发布分支,进行测试并合并到 main。
  3. 关键修复通过热修复分支直接在 main 上应用,并回传到 develop。

适用场景:

  • 有计划发布的项目。
  • 多开发人员的复杂项目。

2. GitHub Flow

适用于持续部署的更简单的分支模型。

分支:

  • 主分支(Main):唯一永久的分支,包含可生产的代码。
  • 特性分支(Feature Branches):为单个特性或 bug 修复创建,从 main 分支出来。

流程:

  1. 在特性分支上工作。
  2. 准备合并到 main 时,打开一个拉取请求(PR)。
  3. 经过代码审查和 CI/CD 检查后,将特性分支合并到 main。
  4. 直接从 main 部署。

适用场景:

  • 小团队。
  • 需要频繁部署的项目。

3. GitLab Flow

一种灵活的策略,结合了 Git Flow 和 GitHub Flow 的元素。与 CI/CD 流水线配合良好。

分支:

  • 主分支(或生产分支):稳定、可生产的代码。
  • 环境特定分支:可选分支,如 staging 或 pre-production。
  • 特性分支:用于新特性或 bug 修复,从 main 分支出来。

流程:

  1. 在特性分支中开发特性。
  2. 将更改合并到适当的环境分支(例如,staging 用于测试)。
  3. 从环境分支部署到生产。

适用场景:

  • 有多个环境(例如,开发、预发布、生产)的团队。
  • 需要手动或分阶段部署的项目。

4. Trunk-Based Development

强调简单性和快速集成的极简策略。

分支:

  • 主分支(Trunk):唯一的长生命周期分支。
  • 短生命周期特性分支:可选分支,用于新特性,通常在几小时或几天内合并回主分支。

流程:

  1. 开发人员直接提交到 main 或使用短生命周期分支。
  2. 使用自动化测试确保稳定性。
  3. 频繁合并以保持主干分支更新。

适用场景:

  • 实践持续集成(CI)的敏捷团队。
  • 快速开发周期的项目。

5. Release Flow

由微软驱动的分支策略,专为大型软件发布设计。

分支:

  • 主分支:生产的稳定分支。
  • 特性分支:用于特性开发。
  • 发布分支:用于准备和稳定特定发布。

流程:

  1. 在特性分支中工作。
  2. 将完成的特性合并到 main。
  3. 创建发布分支进行最终测试、稳定和部署。

适用场景:

  • 有严格发布计划的企业项目。

分支最佳实践

  1. 使用描述性分支名称:使用如 feature/login、bugfix/header-issue 或 hotfix/payment-fix 等名称以清晰表达。
  2. 代码审查:始终使用拉取/合并请求以确保代码质量和协作。
  3. 自动化测试:集成 CI/CD 流水线,在合并前自动测试和验证更改。
  4. 定期合并:保持分支与 main 同步,避免大型复杂的合并冲突。
  5. 删除过时分支:合并后删除分支以保持仓库整洁。

http://www.ppmy.cn/ops/151747.html

相关文章

[Qt]事件-鼠标事件、键盘事件、定时器事件、窗口改变事件、事件分发器与事件过滤器

目录 前言:Qt与操作系统的关系 一、Qt事件 1.事件介绍 2.事件的表现形式 常见的Qt事件: 常见的事件描述: 3.事件的处理方式 处理鼠标进入和离开事件案例 控件添加到对象树底层原理 二、鼠标事件 1.鼠标按下和释放事件(单击&#x…

【学习笔记】Macbook管理多个不同的Python版本

在MacBook上管理不同项目的不同Python版本,可以使用多种方法。以下是一些常见的方法: 1. 使用 pyenv pyenv 是一个非常流行的工具,可以让你轻松安装和切换多个Python版本。以下是安装和使用 pyenv 的步骤: 安装 pyenv 安装依赖…

【STM32 USB】USB描述符

USB各种描述符的拓扑关系 每一个USB设备只有一个设备描述符,主要向主机说明设备类型、端点0最大包长、设备版本、配置数量等等。每一个USB设备至少有一个或者多个配置描述符,但是主机同一时间只能选择某一种配置。标准配置描述符主要向主机描述当前配置下…

go chan底层分析

go chan底层分析 底层源码hchanmakechan 方法 环形队列阻塞机制向管道写数据流程图源码 从管道读数据流程图源码 关闭通道 底层源码 hchan type hchan struct {qcount uint // 当前队列中剩余元素个数dataqsiz uint // 环形队列长度,即可以…

C#如何获取电脑中的端口号和硬件信息

我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。 那么如果我们使用C#编写软件时候,如何获取到串口的硬件信息呢? 思路就是通过读取设备管理器里的条目来实现,我这里给大家…

仿 RabbitMQ 的消息队列1(实战项目)

一,消息队列的背景知识 我们以前学过阻塞队列,其实阻塞队列和消息队列的原理差不多。 在实际的后端开发中, 尤其是分布式系统⾥, 跨主机之间使⽤⽣产者消费者模型, 也是⾮常普遍的需求. 因此, 我们通常会把阻塞队列, 封装成⼀个独⽴的服务器程序, 并且赋…

【数据分享】1929-2024年全球站点的逐日平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()

目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget(一般情况下默认会自带) 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…