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 | — |
develop | master | 日常开发集成;累积新的功能和改动 | — |
feature/XXX | develop | 开发新功能或业务需求;独立进行直至功能完成 | develop |
release/XXX | develop | 预发布准备:修复 bug、更新版本号、编写文档;上线前的最后调试 | master、develop |
hotfix/XXX | master | 紧急修复生产环境问题;快速修补并生成新版本 | 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 测试。