Git Flow 是一种流行的 Git 分支管理策略,由 Vincent Driessen 提出,旨在为团队协作提供清晰的分支模型和工作流程。以下是 Git Flow 工作流的基本介绍和操作步骤:
Git Flow 的分支结构
1. 主分支(Main Branches)
-
main
或master
-
用途:始终包含生产环境的稳定代码。
-
特点:代码通过 发布分支(release branches) 或 修复分支(hotfix branches) 合并到此分支。
-
保护:通常设置为受保护分支,防止直接提交。
-
-
develop
-
用途:包含即将发布的功能代码,是下一个版本的集成分支。
-
特点:代码通过 功能分支(feature branches) 合并到此分支。
-
操作:开发人员不能直接提交到此分支,只能通过合并请求(Pull Requests 或 Merge Requests)将功能分支合并到
develop
。
-
2. 支撑分支(Supporting Branches)
-
feature
-
用途:用于开发新功能。
-
起始点:从
develop
分支创建。 -
操作:开发完成后,通过合并请求合并到
develop
。 -
命名规范:通常以
feature/
开头,如feature/user-management
。
-
-
release
-
用途:用于准备新版本的代码,进行最终的测试和修复。
-
起始点:从
develop
分支创建。 -
操作:在版本发布时,合并到
main
和develop
分支。 -
命名规范:通常以
release/
开头,如release/v1.0.0
。
-
-
hotfix
-
用途:用于修复生产环境中的紧急问题。
-
起始点:从
main
分支创建。 -
操作:修复完成后,合并到
main
和develop
分支。 -
命名规范:通常以
hotfix/
开头,如hotfix/login-issue
。
-
Git Flow 的工作流程
1. 初始化 Git Flow
在项目开始时,初始化 Git Flow 工作流:
git flow init
根据提示设置项目的分支前缀等配置。
2. 功能开发(Feature Development)
-
创建功能分支:
git flow feature start <feature-name>
-
开发功能:
-
进行代码开发和测试。
-
-
完成功能分支:
git flow feature finish <feature-name>
此命令会将功能分支合并到
develop
分支,并删除功能分支。
3. 发布版本(Release)
-
创建发布分支:
git flow release start <release-version>
-
准备发布:
-
进行最终的测试和修复。
-
-
完成发布分支:
git flow release finish <release-version>
此命令会将发布分支合并到
main
和develop
分支,并打标签(tag),标记版本。
4. 紧急修复(Hotfix)
-
创建修复分支:
git flow hotfix start <hotfix-name>
-
修复问题:
-
进行修复代码的开发和测试。
-
-
完成修复分支:
git flow hotfix finish <hotfix-name>
此命令会将修复分支合并到
main
和develop
分支,并打标签。
Git Flow的优势
-
清晰的分支结构:明确区分不同类型的分支,便于团队成员理解和协作。
-
明确的发布流程:通过发布分支来准备和测试新版本,确保发布的稳定性。
-
紧急修复支持:提供专门的流程来处理生产环境中的紧急问题。
-
代码质量保障:通过合并请求进行代码审查,提高代码质量。
Git Flow的工具支持
安装 Git Flow
-
在 Linux 上安装
sudo apt-get install git-flow
-
在 macOS 上安装:
brew install git-flow
-
在 Windows 上安装:
-
可以通过 Git Extensions 或 Git for Windows 安装。
-
常用命令
-
初始化 Git Flow:
git flow init
-
创建功能分支:
git flow feature start <feature-name>
-
完成功能分支:
git flow feature finish <feature-name>
-
创建发布分支:
git flow release start <release-version>
-
完成发布分支:
git flow release finish <release-version>
-
创建修复分支:
git flow hotfix start <hotfix-name>
-
完成修复分支:
git flow hotfix finish <hotfix-name>
通过使用 Git Flow 工作流,团队可以更高效地协作,确保代码的稳定性和可追溯性。它特别适合那些需要频繁发布和维护多个版本的项目。