Git Flow 工作流
Git Flow 是 Vincent Driessen 提出的分支管理模型,适合有明确发布周期的项目。
Git Flow 分支结构
Bash
┌─ master(生产)
│
┌───────┼─ hotfix/*
│ │
│ └─ merge back to master & develop
│
┌───────┼───────┼─ release/*
│ │ │
│ │ └─ merge to master & develop
│ │
│ └───────┼─ develop(开发主干)
│ │
│ └─ feature/*
│ │
│ └─ merge back to develop
│
└─── feature/* ─────┘
分支类型
| 分支 | 类型 | 说明 | 生命周期 |
|---|---|---|---|
| master | 主分支 | 生产环境代码 | 永久 |
| develop | 开发分支 | 集成开发代码 | 永久 |
| feature/* | 功能分支 | 开发新功能 | 临时 |
| release/* | 发布分支 | 发布准备 | 临时 |
| hotfix/* | 热修复分支 | 生产环境修复 | 临时 |
Git Flow 流程
功能开发
Bash
# 1. 从 develop 创建 feature 分支
git checkout develop
git checkout -b feature/login
# 2. 开发功能
git add .
git commit -m "feat: 添加登录功能"
# 3. 完成后合回 develop
git checkout develop
git merge --no-ff feature/login
# 4. 删除 feature 分支
git branch -d feature/login
发布准备
Bash
# 1. 从 develop 创建 release 分支
git checkout develop
git checkout -b release/v1.2.0
# 2. 发布准备(版本号、文档)
git commit -m "chore: 更新版本号"
# 3. 合入 master
git checkout master
git merge --no-ff release/v1.2.0
git tag -a v1.2.0 -m "Release v1.2.0"
# 4. 合回 develop
git checkout develop
git merge --no-ff release/v1.2.0
# 5. 删除 release 分支
git branch -d release/v1.2.0
热修复
Bash
# 1. 从 master 创建 hotfix 分支
git checkout master
git checkout -b hotfix/v1.2.1
# 2. 修复问题
git commit -m "fix: 修复安全漏洞"
# 3. 合入 master
git checkout master
git merge --no-ff hotfix/v1.2.1
git tag -a v1.2.1 -m "Hotfix v1.2.1"
# 4. 合回 develop
git checkout develop
git merge --no-ff hotfix/v1.2.1
# 5. 删除 hotfix 分支
git branch -d hotfix/v1.2.1
Git Flow 工具
text
# 安装 git-flow 工具
# Mac: brew install git-flow
# Linux: apt install git-flow
# 初始化
git flow init
# 开始功能开发
git flow feature start login
git flow feature finish login
# 开始发布
git flow release start v1.2.0
git flow release finish v1.2.0
# 热修复
git flow hotfix start v1.2.1
git flow hotfix finish v1.2.1
Git Flow 适用场景
| 适用 | 不适用 |
|---|---|
| 有明确发布周期 | 持续部署项目 |
| 多版本并行维护 | 小型团队 |
| 企业级项目 | 快速迭代项目 |
Git Flow 优缺点
| 优点 | 缺点 |
|---|---|
| 流程规范清晰 | 分支较多复杂 |
| 适合团队协作 | 发布周期较长 |
| 版本管理清晰 | 合并次数多 |
Git Flow 适合传统软件发布模式,现代项目更倾向 GitHub Flow。
要点总结
- master 永久分支,生产环境代码
- develop 永久分支,开发集成代码
- feature/release/hotfix 是临时分支
- 功能完成后合回 develop
- 发布从 develop 分出,合入 master 和 develop
📝 发现内容有误?点击此处直接编辑