少有人走的路

勇哥的工业自动化技术网站

Git Flow(Git 流)的经典可视化模型



image.png

image.png


image.png

image.png


这张图是 Git Flow(Git 流) 的经典可视化模型,它定义了一套标准化的分支管理流程,让团队能并行开发、稳定发布、紧急修复。我结合图里的分支和节点,给你完整拆解这个开发流程:

🔹 1. 初始化:长期分支的建立

Git Flow 从两个长期存在的核心分支开始,它们贯穿项目整个生命周期:
  • main(蓝色线):生产环境的稳定分支,只包含经过充分测试的正式版本,每个节点对应一个带 tag 的发布版本(如 v1.0.0v1.0.1)。

  • develop(黄色线):开发集成分支,所有功能开发完成后都会合并到这里,是下一个版本的 “基线”,包含最新的开发成果。


🔹 2. Feature 分支:并行开发新功能(紫色线)

当需要开发新功能时,从 develop 分支分叉出临时的 Feature 分支(图中紫色线):
  1. 创建分支:每个 Feature 分支对应一个独立功能(如 “major feature for next release”“feature for future release”),不同功能可以并行开发(所以图里有多条紫色线)。

  2. 开发迭代:紫色节点是功能开发中的提交(commit),开发过程中可以打临时测试标签(如 v1.1.0-dev.a1+20260117.sha334fad641),用于内部分发测试(图中标注 “may be temporarily distributed to others”),这是当前分支的快照,不是新分支。

  3. 合并回开发分支:功能开发完成后,将 Feature 分支合并到 develop(紫色箭头指向黄色 develop 节点),合并后 Feature 分支通常会被删除,避免分支冗余。


🔹 3. Release 分支:预发布准备(绿色线)

develop 分支的功能足够发布一个新版本时,从 develop 分叉出临时的 Release 分支(图中绿色线):
  1. 创建分支:比如图里的 release/1.1.0,标注 “start of release branch for 1.1.0”。

  2. 仅修复 Bug:Release 分支的核心规则是 “不开发新功能,只修复发布前的 Bug”,图中绿色节点是 Bug 修复的提交,还会打预发布标签(如 v1.1.0-alphav1.1.0-beta1v1.1.0-rc),用于测试验证。

  3. 合并到生产与开发分支

    • 合并到 main 分支(绿色箭头指向蓝色 main 节点),并在 main 上打正式版本标签(如 v1.1.0),完成发布。

    • 同时将 Release 分支的 Bug 修复合并回 develop(标注 “bugfixes from release branch are continuously merged back into develop”),保证后续开发包含这些修复。

  4. 删除分支:合并完成后,Release 分支会被删除。


🔹 4. Hotfix 分支:生产环境紧急修复(红色线)

当生产环境(main 分支)出现严重 Bug 时,从 main 分叉出临时的 Hotfix 分支(图中红色线):
  1. 创建分支:比如图里的 hotfix/v1.0.1,标注 “severe bug fixed for production”。

  2. 修复 Bug:红色节点是紧急修复的提交,修复完成后:

    • 合并到 main 分支(红色箭头指向蓝色 main 节点),并打紧急版本标签(如 v1.0.1)。

    • 同时合并回 develop 分支(红色箭头指向黄色 develop 节点,标注 “incorporate bugfix in develop”),避免后续 Release 分支遗漏这个修复。

  3. 删除分支:修复完成后,Hotfix 分支会被删除。


🔹 5. 迭代循环:持续交付

完成一个 Release 或 Hotfix 后,develop 分支会继续接收新的 Feature 分支合并,重复 “Feature → Develop → Release → Main/Hotfix” 的流程,推进到下一个版本(如图里的 v1.2.0),实现持续迭代和稳定交付。

✅ Git Flow 核心原则总结

  • 长期分支main(稳定生产)和 develop(集成开发)是永远存在的分支。

  • 短期分支:Feature、Release、Hotfix 都是临时分支,完成任务后就删除,保持分支结构清晰。

  • 隔离风险:不同阶段的工作在独立分支中进行,避免开发中的功能影响生产环境,也避免紧急修复干扰正常开发。



下面整理一份 Git Flow 完整操作命令清单,涵盖初始化、功能开发、版本发布、紧急修复全流程,

每个命令都标注了作用和适用场景:

前置准备

1. 确认 Git 环境(可选)

# 检查Git版本(需2.0+)
git --version
# 安装Git Flow插件(简化操作,可选,mac/linux用brew,windows用Git Bash)
# mac/linux
brew install git-flow-avh
# windows(Git Bash中)
# 无需手动安装,多数Git客户端(如Git for Windows)已内置

2. 语义化版本规范(统一命名)

  • 正式版本:v主版本.次版本.修订版本(如 v1.0.0v1.1.0v1.0.1

  • 测试版本:v1.1.0-alpha(内测)、v1.1.0-beta1(公测)、v1.1.0-rc(候选版)

  • 分支命名:全小写 + 连字符(如 feature/user-loginrelease/1.1.0


🔹 第一步:初始化 Git Flow(项目首次使用)

# 进入项目目录
cd your-project
# 初始化Git仓库(未初始化时)
git init
# 初始化Git Flow(按回车使用默认分支名:main=master,develop=develop)
git flow init
# 手动指定分支名(推荐,适配新版Git的main分支)
git flow init -d --main-branch=main --develop-branch=develop

初始化后会生成 2 个长期分支:main(生产)、develop(开发)

🔹 第二步:Feature 分支(功能开发)

操作Git Flow 命令(简化)原生 Git 命令(无插件也能用)说明
创建并切换分支git flow feature start user-logingit checkout develop && git checkout -b feature/user-login从 develop 创建 feature/user-login 分支
开发中提交代码git add . && git commit -m "完成用户登录逻辑"同上常规提交,可多次执行
打临时测试标签git tag -a v1.1.0-dev.a1 -m "用户登录功能内测版"同上标记当前提交为内测版,用于分发测试
推送分支到远程git push origin feature/user-login同上团队协作时推送分支
完成并合并分支git flow feature finish user-login# 1.切回develop<br>git checkout develop<br># 2.合并feature分支<br>git merge --no-ff feature/user-login<br># 3.推送develop到远程<br>git push origin develop合并到 develop,自动删除本地 feature 分支
删除远程 feature 分支-git push origin --delete feature/user-login协作完成后清理远程分支

🔹 第三步:Release 分支(版本发布准备)

操作Git Flow 命令原生 Git 命令说明
创建并切换分支git flow release start 1.1.0git checkout develop && git checkout -b release/1.1.0从 develop 创建 release/1.1.0 分支
修复发布前 Buggit add . && git commit -m "修复登录按钮样式Bug"同上仅修复 Bug,不开发新功能
打预发布标签git tag -a v1.1.0-beta1 -m "1.1.0版本公测版"同上标记公测版本,供测试验证
完成并合并分支git flow release finish 1.1.0# 1.切回main<br>git checkout main<br># 2.合并release分支并打正式标签<br>git merge --no-ff release/1.1.0<br>git tag -a v1.1.0 -m "1.1.0正式版"<br># 3.切回develop,合并Bug修复<br>git checkout develop<br>git merge --no-ff release/1.1.0<br># 4.推送main和标签到远程<br>git push origin main<br>git push origin --tags同时合并到 main(正式发布)和 develop(同步修复)
删除本地 release 分支-git branch -d release/1.1.0完成后清理临时分支
推送 develop 到远程-git push origin develop同步 Bug 修复到开发分支

🔹 第四步:Hotfix 分支(生产环境紧急修复)

操作Git Flow 命令原生 Git 命令说明
创建并切换分支git flow hotfix start 1.0.1git checkout main && git checkout -b hotfix/1.0.1从 main(生产分支)创建修复分支
修复紧急 Buggit add . && git commit -m "修复生产环境支付接口Bug"同上仅修复核心 Bug,极简提交
完成并合并分支git flow hotfix finish 1.0.1# 1.切回main,合并并打标签<br>git checkout main<br>git merge --no-ff hotfix/1.0.1<br>git tag -a v1.0.1 -m "1.0.1紧急修复版"<br># 2.切回develop,同步修复<br>git checkout develop<br>git merge --no-ff hotfix/1.0.1<br># 3.推送main、develop和标签<br>git push origin main<br>git push origin develop<br>git push origin --tags同时修复生产和开发分支
删除本地 hotfix 分支-git branch -d hotfix/1.0.1清理临时分支

🔹 补充:常用辅助命令

# 查看所有分支(含远程)
git branch -a
# 查看所有标签
git tag
# 切换到指定标签(用于回滚/验证版本)
git checkout v1.1.0
# 删除本地标签
git tag -d v1.1.0-beta1
# 删除远程标签
git push origin --delete tag v1.1.0-beta1
# 拉取远程最新分支和标签
git fetch --all --tags


总结

  1. Git Flow 核心是 “长期分支(main/develop)+ 临时分支(feature/release/hotfix)”,临时分支完成后必须删除,保持分支结构清晰;

  2. 优先使用git flow插件命令(简化操作),无插件时用原生命令,核心逻辑一致;

  3. 所有正式版本(main 分支)必须打标签,便于版本回溯和发布管理。

这套命令覆盖了团队协作中 99% 的 Git Flow 场景,你可以根据项目实际需求调整分支命名(如 feature/xxx 改为 feature/XXX-123,关联需求编号),核心流程不变。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864