更新时间:2025-12-23 GMT+08:00
分享

Git Flow工作流

Git Flow工作流概述

Git Flow是业界广泛使用的分支管理规范,通过定义固定类型的分支及流转规则,适配中大型项目的多角色写作需求,该协作工作流涉及的核心分支类型、职责及流转逻辑如下表所示:

表1 Git Flow工作流核心分支详解

分支类型

创建来源

核心职责

命名规范示例

合并目标

生命周期

master

仓库初始化自动创建

存放生产环境稳定版本的代码,与正式版本Tag绑定。

master

release/hotfix

永久,即项目存续期间一直存在。

develop

从master分支创建

开发主分支,整合已完成的功能,存放待发布代码。

  • 简化命名:dev
  • 完整拼写:development
  • 带环境标识的命名,此命名仅适用于复杂多环境的场景,普通项目不建议使用,否则会增加理解成本:
    • develop-dev,表示开发环境的主分支。
    • develop-test,表示测试环境的主分支。

feature/release

永久

feature

从develop分支创建

单个新功能开发,仅包含与该功能相关的代码修改。

  • 基础格式:feature/具体功能描述,示例:feature/ure-login,表示用户登录功能。
  • 关联需求ID格式:feature/issueID-功能描述,示例:feature/123-user-avatar-upload,表示修复ID为123的用户头像上传功能。

develop

临时分支,功能合并后删除此分支。

release

从develop分支创建

为版本发布做准备,仅修复测试中发现的bug,不新增功能代码。

说明:

版本号的三个数字依次表示:主版本号、次版本号和修订号,前缀统一使用v,即version的缩写。

  • 正式版本发布:
    • release/v1.0.0,表示正式版本
    • release/v2.1.0,表示为2.1.0正式版本发布准备,包含新功能。
  • 补丁版本发布:release/v1.0.1,表示1.0.1 补丁版,修复 1.0.0 的bug。

master+develop

临时分支,版本发布后删除此分支。

hotfix

从master分支创建

紧急修复生产环境的bug,优先级高于feature分支。

  • 直接描述问题:hotfix/user-data-display-error,表示修复用户数据显示错误。
  • 关联版本号,此命名方式便于追溯:hotfix/v1.0.1-user-data-display-error,表示针对1.0.1版本修复用户数据显示错误。

master+develop

临时分支,修复完成合并后删除此分支。

Git Flow工作流优点

  • 结构化清晰,流程规范。

    此工作流明确区分master(生产)、develop(开发)、feature(功能)、release(发布)、hotfix(紧急修复)等分支的职责和流转逻辑,避免分支混乱,适合团队协作时统一开发节奏。

  • 隔离性强,降低风险。
    • 新功能在feature分支开发,不影响develop主分支的稳定性。
    • 版本发布前通过release分支处理测试和小修复,避免干扰日常开发。
    • 生产环境的bug通过hotfix分支单独修复,不中断正常开发流程。
  • 版本管理清晰,可追溯性强。
    • master分支与版本Tag(如 v1.0.0)绑定,便于快速定位生产版本代码。
    • 分支命名和合并记录清晰,可通过提交历史追溯功能来源和修复内容,便于问题排查。
  • 适配中大型项目和长期维护。

    对于迭代周期长、团队成员多和需要持续维护的项目,Git Flow的严格流程能确保多角色协作有序,减少代码冲突和发布风险。

Git Flow工作流缺点

  • 灵活性不足,不适合快速迭代。

    对于敏捷开发和持续部署的项目,release分支的存在可能延缓发布节奏。例如,小功能迭代也需经过feature > develop > release > master的完整开发流程,不够灵活。

  • 流程繁琐,学习成本高。
    • 需要理解多种分支类型的创建来源、合并目标和生命周期,新手需要一定时间掌握。
    • 日常操作中分支创建、合并和删除的步骤较多,增加了管理成本。
  • 分支冗余,维护成本高。

    长期使用会产生大量临时分支(feature/release/hotfix),如果没有及时清理,会导致分支列表臃肿,增加管理复杂度。

  • 不适用于小型项目或团队对于3-5人的小团队或短期项目。

    严格的Git Flow流程可能显得过重,简单的master+develop分支模式即可满足小团队或者短期项目需求,不需要引入复杂的分支类型。

相关文档