



🔹 1. 初始化:长期分支的建立
main(蓝色线):生产环境的稳定分支,只包含经过充分测试的正式版本,每个节点对应一个带tag的发布版本(如v1.0.0、v1.0.1)。develop(黄色线):开发集成分支,所有功能开发完成后都会合并到这里,是下一个版本的 “基线”,包含最新的开发成果。
🔹 2. Feature 分支:并行开发新功能(紫色线)
develop 分支分叉出临时的 Feature 分支(图中紫色线):创建分支:每个 Feature 分支对应一个独立功能(如 “major feature for next release”“feature for future release”),不同功能可以并行开发(所以图里有多条紫色线)。
开发迭代:紫色节点是功能开发中的提交(commit),开发过程中可以打临时测试标签(如
v1.1.0-dev.a1+20260117.sha334fad641),用于内部分发测试(图中标注 “may be temporarily distributed to others”),这是当前分支的快照,不是新分支。合并回开发分支:功能开发完成后,将 Feature 分支合并到
develop(紫色箭头指向黄色develop节点),合并后 Feature 分支通常会被删除,避免分支冗余。
🔹 3. Release 分支:预发布准备(绿色线)
develop 分支的功能足够发布一个新版本时,从 develop 分叉出临时的 Release 分支(图中绿色线):创建分支:比如图里的
release/1.1.0,标注 “start of release branch for 1.1.0”。仅修复 Bug:Release 分支的核心规则是 “不开发新功能,只修复发布前的 Bug”,图中绿色节点是 Bug 修复的提交,还会打预发布标签(如
v1.1.0-alpha、v1.1.0-beta1、v1.1.0-rc),用于测试验证。合并到生产与开发分支:
合并到
main分支(绿色箭头指向蓝色main节点),并在main上打正式版本标签(如v1.1.0),完成发布。同时将 Release 分支的 Bug 修复合并回
develop(标注 “bugfixes from release branch are continuously merged back into develop”),保证后续开发包含这些修复。删除分支:合并完成后,Release 分支会被删除。
🔹 4. Hotfix 分支:生产环境紧急修复(红色线)
main 分支)出现严重 Bug 时,从 main 分叉出临时的 Hotfix 分支(图中红色线):创建分支:比如图里的
hotfix/v1.0.1,标注 “severe bug fixed for production”。修复 Bug:红色节点是紧急修复的提交,修复完成后:
合并到
main分支(红色箭头指向蓝色main节点),并打紧急版本标签(如v1.0.1)。同时合并回
develop分支(红色箭头指向黄色develop节点,标注 “incorporate bugfix in develop”),避免后续 Release 分支遗漏这个修复。删除分支:修复完成后,Hotfix 分支会被删除。
🔹 5. 迭代循环:持续交付
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.0、v1.1.0、v1.0.1)测试版本:
v1.1.0-alpha(内测)、v1.1.0-beta1(公测)、v1.1.0-rc(候选版)分支命名:全小写 + 连字符(如
feature/user-login、release/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-login | git 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.0 | git checkout develop && git checkout -b release/1.1.0 | 从 develop 创建 release/1.1.0 分支 |
| 修复发布前 Bug | git 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.1 | git checkout main && git checkout -b hotfix/1.0.1 | 从 main(生产分支)创建修复分支 |
| 修复紧急 Bug | git 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
总结
Git Flow 核心是 “长期分支(main/develop)+ 临时分支(feature/release/hotfix)”,临时分支完成后必须删除,保持分支结构清晰;
优先使用
git flow插件命令(简化操作),无插件时用原生命令,核心逻辑一致;所有正式版本(main 分支)必须打标签,便于版本回溯和发布管理。