Git Flow 是由 Vincent Driessen 提出的一种高效的分支管理模型,适用于中大型项目或有明确发布周期的团队。其核心思想是通过明确的分支角色和严格的生命周期,规范化开发、测试、发布和维护流程。
核心分支结构
- 主分支(
master)- 仅存放生产环境可用的稳定代码。
- 只能通过合并
release或hotfix分支更新。 - 每次合并需打标签(
tag),标明版本号(如v1.0.0)。
- 开发分支(
develop)- 集成所有新功能的基准分支,代表下一版本的开发状态。
- 功能分支(
feature/*)和修复分支(hotfix/*)均基于此分支创建。
- 辅助分支(临时性,用后删除)
- 功能分支(
feature/\*):开发新功能。 - 发布分支(
release/\*):准备发布的测试和修复。 - 热修复分支(
hotfix/\*):紧急修复生产环境问题。
- 功能分支(
详细使用流程
1. 初始化 Git Flow
# 安装 git-flow 工具(如未安装)
# macOS: brew install git-flow-avh
# Linux: apt-get install git-flowgit flow init -d # 使用默认配置初始化仓库
默认分支名称为 master(主分支)和 develop(开发分支)。
2. 开发新功能(Feature)
git flow feature start FEATURE_NAME # 从 develop 创建分支 feature/FEATURE_NAME
# 开发完成后提交并合并
git flow feature finish FEATURE_NAME
-
合并规则:将
feature/*分支合并到develop,并删除原分支。 -
Commit 规范:
feat(scope): 简短描述功能 # 正文(可选,说明改动细节) # 脚注(可选,关联Issue或Breaking Changes)
3. 准备发布版本(Release)
git flow release start v1.0.0 # 从 develop 创建分支 release/v1.0.0
# 在 release 分支进行测试、版本号更新、文档完善等
git flow release finish v1.0.0
-
合并规则:
- 自动合并到
master并打标签v1.0.0。 - 同步回
develop分支。 - 删除
release/*分支。
- 自动合并到
-
Commit 规范:
chore(release): v1.0.0 - 更新版本号至 1.0.0 - 修复已知测试问题 [Issue #123]
4. 紧急修复生产问题(Hotfix)
git flow hotfix start v1.0.1 # 从 master 创建分支 hotfix/v1.0.1
# 修复后提交并完成
git flow hotfix finish v1.0.1
-
合并规则:
- 自动合并到
master并打标签v1.0.1。 - 同步回
develop分支。
- 自动合并到
-
Commit 规范:
fix(auth): 修复用户登录失败问题 因 OAuth 令牌过期时间未正确刷新,导致会话失效。 解决方案:延长令牌有效期至 2 小时。 Closes #456
Commit Message 规范(Conventional Commits)
-
格式:
<类型>(<作用域>): <简短描述> [空行] <正文(可选)> [空行] <脚注(可选,如关联Issue)> -
常用类型:
feat: 新增功能fix: 修复问题docs: 文档变更style: 代码格式/样式调整(不改变逻辑)refactor: 重构代码(非功能变更)test: 测试相关chore: 构建/工具链变更
-
示例:
feat(checkout): 支持支付宝支付 新增支付宝 SDK 集成,用户可在结算页选择支付宝。 配置项见 `config/payment.js`。 Related to #789
最佳实践
- 分支命名:清晰标明类型和目的(如
feature/user-auth)。 - 频繁同步:定期将
develop分支合并到长期存在的feature分支。 - 标签语义化:版本号遵循
语义化版本(SemVer,主版本.次版本.修订号)。 - Code Review:合并到
develop或master前需经过审核。
Git Flow 的变体
- GitHub Flow:简化版,仅用
master和feature分支,适合持续交付。 - GitLab Flow:引入环境分支(如
production,staging)。
根据团队规模和发布节奏选择合适的模型!
