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

git flow

git flow

  • 一、什么是 Git Flow
  • 二、分支类型与职责
  • 三、安装与初始化
    • 安装 Git Flow
    • 在仓库中初始化
  • 四、典型操作流程与命令示例
    • 1. 创建 & 完成 Feature 分支
    • 2. 创建 & 完成 Release 分支
    • 3. 创建 & 完成 Hotfix 分支
  • 五、Git Flow 完整示意
    • 日常开发
    • 准备发布
    • 紧急修复
  • 六、优缺点
    • 优点
    • 缺点
  • 七、适用场景
  • 八、小贴士

一、什么是 Git Flow

Git Flow 是 Vincent Driessen 在 2010 年提出的一套 Git 分支管理模型,它通过 主分支(master)、开发分支(develop) 以及若干辅助分支(feature、release、hotfix 等)来规范团队协作与发布流程。

  • master:始终保持可部署状态,每次向 master 合并时都应该是一个新的生产版本。

  • develop:日常开发集成分支,所有 feature 完成后都合并到 develop。

二、分支类型与职责

分支类型来源目的合并目标
master保存可发布的历史版本;每次发布都会在此打 tag
developmaster日常开发集成;累积新的功能和改动
feature/XXXdevelop开发新功能或业务需求;独立进行直至功能完成develop
release/XXXdevelop预发布准备:修复 bug、更新版本号、编写文档;上线前的最后调试master、develop
hotfix/XXXmaster紧急修复生产环境问题;快速修补并生成新版本master、develop

三、安装与初始化

安装 Git Flow

  • macOS(Homebrew):
    brew install git-flow
    
  • Windows(Git for Windows 自带或通过 Chocolatey):
    choco install git-flow
    
  • Linux(Ubuntu/Debian):
    sudo apt-get install git-flow
    

在仓库中初始化

git flow init

交互式地让你指定:

  • master 分支名称(默认 master 或 main)

  • develop 分支名称(通常为 develop)

  • 各类前缀(feature/、release/、hotfix/)

可用 -d 接受默认配置:

git flow init -d

四、典型操作流程与命令示例

1. 创建 & 完成 Feature 分支

# 开始一个新功能开发
git flow feature start 登录
# → 在本地新建 develop/feature/登录 分支# 开发过程中,正常 add & commit
git add .
git commit -m "feat: 完成登录界面布局"# 功能开发完毕,合并回 develop 并删除分支
git flow feature finish 登录
  • feature finish 会自动切回 develop,合并,并删除远程与本地的 feature 分支。

  • 若需推送到远程仓库可在 finish 后执行 git push origin develop。

2. 创建 & 完成 Release 分支

# 当 develop 上的功能累积到一个稳定版本时,创建 release
git flow release start 1.2.0
# → 分支: release/1.2.0# 在 release 分支上:
# - 修复小 bug
# - 修改版本号(如 package.json、pom.xml 等)
# - 更新文档、Changelog# 完成后合并;会:
# 1. 合并到 master,并打上 tag v1.2.0
# 2. 合并回 develop
# 3. 删除 release 分支
git flow release finish '1.2.0'
  • 可附加 -m “Release 1.2.0” 来添加合并说明。

3. 创建 & 完成 Hotfix 分支

# 紧急修复:从 master 创建 hotfix
git flow hotfix start 1.2.1# 在 hotfix/1.2.1 分支上修复 bug
git add .
git commit -m "fix: 修复支付接口 500 错误"# 完成 hotfix:
# - 合并到 master 并打 tag v1.2.1
# - 合并回 develop
git flow hotfix finish '1.2.1'

五、Git Flow 完整示意

日常开发

  • 所有新功能在 feature 分支进行

  • feature 完成后合并到 develop

准备发布

  • 从 develop 创建 release 分支

  • 在 release 分支上做最后的修复和版本号更新

  • 完成后合并到 master(生成 Tag),并合并回 develop

紧急修复

  • 直接从 master 创建 hotfix

  • 修复完毕后合并到 master(生成 Tag)及 develop

六、优缺点

优点

  • 分支职责清晰,适合多人、长周期、大项目

  • 发布过程可控,支持并行开发、预发布测试、紧急修复

缺点

  • 分支较多,操作命令繁琐

  • 对短周期、持续部署(CI/CD)场景不够灵活

  • 新手学习成本稍高

七、适用场景

  • 适合:迭代周期较长、有明确版本发布需求的中大型团队项目。

  • 不太适合:

    • 频繁小步快跑、每日部署(GitHub Flow 更轻量)

    • 仅有少数开发者、需求快速变动的场景

八、小贴士

  • 若使用 GitHub Actions/GitLab CI,可结合自动化脚本在 release finish 或 tag 推送时触发构建、测试或部署。

  • 对接 Jira、Trello 等看板时,可将 feature 分支命名为 feature/JIRA-123,便于追踪。

  • 保持 develop 分支的稳定性,尽量在合并前做好本地、CI 测试。

http://www.xdnf.cn/news/302221.html

相关文章:

  • 线性回归有截距
  • 电子电器架构 --- 网关ECU中采用多CPU解决方案来实现网关功能
  • 《算法导论(第4版)》阅读笔记:p9-p9
  • NestJS 的核心构建块有哪些?请简要描述它们的作用(例如,Modules, Controllers, Providers)
  • vue3 computed方法使用详细讲解
  • LeetCode 790 多米诺和托米诺平铺 题解
  • 深入解析 Linux/Unix 通信机制:从原理到观测实践
  • 第四章 Java基础-判断和循环
  • I2C总线驱动开发:MPU6050应用
  • 牛客——暴力、技巧、字符与数组的使用(强强联合、字符数量)
  • [三分钟]性能测试工具JMeter入门: 下载安装JMeter并设置中文;JMeter基本使用流程
  • Linux(十四)进程间通信(IPC),管道
  • leetcode0542. 01 矩阵-medium
  • 第八章,STP(生成树协议)
  • [论文阅读]Deep Cross Network for Ad Click Predictions
  • C# 使用SunnyUI控件 (VS 2019)
  • 上市公司-企业上下游供应链数据(2003-2023年)-社科数据
  • 解释 NestJS 的架构理念(例如,模块化、可扩展性、渐进式框架)
  • 【MongoDB篇】MongoDB的事务操作!
  • VBA ListBox/ComboBox 响应鼠标滚轮操作
  • Java中常见的问题
  • Jupyter Notebook为什么适合数据分析?
  • [监控看板]Grafana+Prometheus+Exporter监控疑难排查
  • UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
  • Maven依赖未生效问题
  • Houdini制作烟雾消散并导入UE5
  • UE5 Daz头发转Blender曲线再导出ABC成为Groom
  • 基于Blender的AI插件——2D图片生成3D模型
  • Python 中的数据结构介绍
  • LangChain:大语言模型应用的“瑞士军刀”入门指南