PostsMapsLinks
Version Control

GitHub Flow

GitHub Flow 是一种基于 PR 的轻量级 Git 工作流,由 GitHub 团队提出。

Quick Questions

GitHub Flow 是什么?

GitHub Flow 是一种基于 PR 的轻量级 Git 工作流,由 GitHub 联合创始人 Scott Chacon 于 2011 年提出。核心原则只有一条:main 分支上的任何内容都随时可部署。 在此工作流中, 所有功能开发都在独立的 feature 分支上进行,通过 Pull Request 完成审查后合并回 main,合并即部署。

GitHub Flow 怎么运作?

  1. main 创建描述性命名的功能分支
  2. 在功能分支上提交并推送更改
  3. 创建 Pull Request,邀请团队成员审查
  4. 根据审查反馈继续迭代,PR 会自动更新
  5. PR 获批并通过所有检查后,合并到 main
  6. 合并后立即删除功能分支

没有 developreleasehotfix 等辅助分支,所有工作都围绕 main + 功能分支展开。

GitHub Flow 和 Gitflow 有什么区别?

维度GitflowGitHub Flow
长期分支master + developmain
辅助分支featurereleasehotfix仅功能分支
发布方式手动合并到 master 并打版本标签合并即部署
适用场景需要多版本维护的桌面 / 移动应用频繁部署的 Web 应用、SaaS

Gitflow 作者 Vincent Driessen 在 2020 年补充说明中提到:类似 Web 应用这种不需要经常回滚的场景,使用更简单的 GitHub Flow 可能更合适。

GitHub Flow 有什么局限性?

  • 不适合多版本维护:没有 release 分支,难以同时维护 v1.x 和 v2.x
  • PR 可能成为瓶颈:审查延迟导致分支存活时间变长,合并冲突风险增大
  • 不适合库(Library)开发:库依赖版本号管理,需要显式的版本发布流程
  • 缺乏显式热修复机制:紧急修复和普通功能走相同流程

GitHub Flow 和主干开发(Trunk-Based Development)的关系?

两者都追求持续部署和短反馈循环。主要区别在于未完成功能的隔离方式:GitHub Flow 用功能分支,主干开发用 Feature Flag。有观点认为 GitHub Flow 本质上是主干开发的一种宽松变体。

相关资源

Copyright © 2024 Lionad - CC-BY-NC-CD-4.0