tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

    • Git使用手册
    • Git常用命令
    • npm常用命令
    • Git工作必看
    • Git修改分支名
    • GitFlow的使用和注意
      • GitFlow-定义
        • 各个分支
        • 主分支
        • 辅助分支
        • 流程图
        • 总结
      • GitFlow-扩展
        • 为什么要合并回 develop?
        • develop和main的关系
        • 开发中,线上(main)出 bug
  • GitHub技巧

  • Mac

  • 网络

  • 项目构建合集

  • 工具
  • 技术文档
EffectTang
2025-09-17
目录

GitFlow的使用和注意

# GitFlow的使用和注意

# GitFlow-定义

在企业开发中,团队协作通常不会直接在 main 或 master 上开发,而是会遵循一套分支管理流程。

所谓 GitFlow,就是最经典的一种 基于分支的工作流(branching model)。它由 Vincent Driessen 在 2010 年提出,用来规范团队如何创建、合并和管理分支。

GitFlow 定义了分支类型和分工:每种分支有明确职责,整个流程看起来就像流水线。

# 各个分支

# 主分支

main(或 master)

  • 线上正式运行的代码。
  • 只能从 release 或 hotfix 分支合并。
  • 始终保持稳定可发布状态。

develop

  • 主开发分支,所有功能分支的基础。
  • 开发完成的功能先合并到 develop,不会直接影响线上。

# 辅助分支

feature/\*

  • 用来开发新功能。
  • 从 develop 拉出来,开发完后再合并回 develop。
  • 命名:feature/login-api、feature/cart-page

release/\*

  • 用来准备一次版本发布。
  • 从 develop 拉出来,做测试、修复 bug、调整小问题。
  • 测试通过 → 合并回 main 和 develop,并打 tag。
  • 命名:release/1.0.0

hotfix/\*

  • 紧急修复线上 bug。
  • 从 main 拉出来,修复后再合并回 main 和 develop。
  • 命名:hotfix/fix-login-bug

# 流程图

main ───────────●─────●──────────────●───────▶
                 ↑     ↑
                /       \
       hotfix──●         ●──release
               ↑          \
develop ──────●───────────●─────────▶
                \          \
                 ●──feature ●──feature

1
2
3
4
5
6
7
8
9

# 总结

GitFlow = 一种 Git 分支管理流程,主要分为:

  • main(线上)
  • develop(开发主干)
  • feature(功能开发)
  • release(发布前测试)
  • hotfix(线上修复)

它适合 版本发布周期长、多人协作的大型项目。 但对于互联网敏捷项目,现在很多公司改用 GitHub Flow(只有 main + feature 分支) 或 GitLab Flow(结合 CI/CD)。

# GitFlow-扩展

线上紧急修复(hotfix)

  • 如果线上 main 出了 bug:
    • 从 main 拉出 hotfix/*
    • 修复完成后合并回 main 和 develop

# 为什么要合并回 develop?

因为 develop 可能比 main 超前,已经有很多新功能了,但这个 bug 修复必须保证 未来版本也带上。 否则,等下次发布时,新功能合并到 main,又会把旧的 bug 带回来。

develop 上的某些提交点会和 main 上完全一样,因为 hotfix 必须回流。

这样才能保证:线上修过的 bug 不会在下一个版本又出现。

# develop和main的关系

  • develop 会比 main 多出很多提交(功能开发、测试提交等)。
  • 只有当要发布时,才会从 develop 拉出 release → 稳定后合并回 main。
  • 因此,main 上的每个版本号 tag(比如 v1.0.0, v1.1.0),都对应 develop 历史中的某个稳定节点。

可以这么理解:

  • develop:记录了“开发的全过程”,提交很多,可能包含不稳定的代码。
  • main:只挑选出 develop 中那些稳定可发布的里程碑节点。
main     ---●────────────●──────────●────────▶
             v1.0.0       v1.1.0     v1.2.0
              ↑             ↑          ↑
develop  ---●───●──●──●───●──●──●────●──●────▶
             功能1  功能2   修复   功能3  功能4

1
2
3
4
5
6

# 开发中,线上(main)出 bug

假设当前情况:

  • 你在 develop 上开发新功能(可能一堆代码还没完成,甚至不稳定)。
  • 突然线上用户反馈一个严重 bug(在 main 里)。

1.从 main 拉出 hotfix 分支

git checkout main
git checkout -b hotfix/fix-login-bug
1
2

2.修复 bug & 提交代码

git commit -am "fix: login bug"
1

自动将所有已被 Git 跟踪的文件的修改(modified files)添加到暂存区,并提交一次,提交信息为 "fix: login bug"。

等同于 git add + git commit -m "xx"

3.合并到 main

git checkout main
git merge hotfix/fix-login-bug
git tag -a v1.0.1 -m "Hotfix: login bug"
git push origin main --tags
1
2
3
4

上线发布新版本(例如 v1.0.1)。

这是一个选项,表示:同时推送所有本地的标签(tags)到远程仓库。

  • Git 的 tag 通常用于标记发布版本,比如 v1.0.0、v2.1.3。
  • 默认情况下,git push origin main 不会推送标签,只推送分支上的提交。
  • 加上 --tags 后,所有通过 git tag v1.0.0 创建的标签都会被推送到远程。

4.合并回 develop

git checkout develop
git merge hotfix/fix-login-bug
git push origin develop
1
2
3

确保开发主干也包含这个 bug 修复,不会在未来新版本里“又复活”。

5.删除 hotfix 分支

git branch -d hotfix/fix-login-bug
1
上次更新: 2025/09/17, 15:28:33
Git修改分支名
GitHub高级搜索技巧

← Git修改分支名 GitHub高级搜索技巧→

最近更新
01
Spring中Bean的生命周期
09-03
02
数据不丢失与准确类
09-01
03
线程池与任务调度
08-31
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式