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. 合并后立即删除功能分支

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

GitHub Flow 和 Gitflow 有什么区别?

维度GitflowGitHub Flow
长期分支master + develop仅 main
辅助分支feature、release、hotfix仅功能分支
发布方式手动合并到 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