社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

写代码的人都懂:GitHub 开始解决“大 PR 地狱”

InfoQ • 6 月前 • 247 次点击  
作者 | Matt Saunders
译者 | 田橙

GitHub 已通过一个名为 gh-stack 的新 CLI 扩展推出原生的堆叠式拉取请求工作流,填补了多年来一直由第三方工具弥补的空白。该方案的目的是解决大型拉取请求难以审查、合并缓慢且容易产生冲突的问题;GitHub 表示,在这种情况下,审查者会丢失上下文,反馈质量下降,整个团队的效率也会随之降低。

堆叠式拉取请求(有时也称为依赖式或链式 PR)是一种代码评审模式,在这种模式中,每个分支并不是直接指向主分支,而是按顺序指向其下方的前一个分支。该方法使开发者能够在较早层仍在审查时,继续推进功能后续层的开发工作。

我曾花费大量时间等待代码评审完成,这也是我构建这个工具的主要动机。Phabricator Differential 的共同创建者 Evan Priestley 表示。

发布公告中引用的研究表明,这种工作流具有可量化的收益。一项对 150 万个拉取请求的分析发现,200 到 400 行之间的 PR 缺陷减少了 40%,审批速度比更大的 PR 快了三倍。堆叠式方法的设计目标,是即便底层功能规模较大,也能让每个单独的 PR 保持在这一范围内。

gh-stack 扩展与现有的 GitHub CLI 集成,并处理了历史上让堆叠式工作流难以手动维护的各种机制。其核心命令 gh stack sync 会在整个堆栈中级联执行 rebase,并在对较早层进行更改后,以原子方式强制推送每个分支。GitHub 的拉取请求界面新增了堆栈映射,使审查者可以在各层之间导航;分支保护规则则针对最终目标分支生效,而不是每个 PR 的直接基线分支。CI 也会像每个 PR 直接指向主分支一样运行。

该扩展还集成了 AI 代理。运行 gh skill install github/gh-stack 可以让兼容的 AI 编码代理学会如何创建和管理堆栈,从而能够将大型 diff 拆分为多个层,或在任务一开始就采用堆栈方式进行开发。

CLI 是完全可选的,你也可以仅通过 UI 创建堆叠式 PR。 GitHub 的 Sameen Karim 表示。

堆叠式 diff 模式在软件开发中并非新事物。Meta 和 Google 早在近十年前就采用了类似的工作流,并构建了包括 Phabricator 和 Gerrit 在内的自定义工具。Simohamed Marhraoui 早在 2021 年就在 LogRocket 上撰文指出,该方法已适用于 GitHub,但需要注意合并策略:squash 和 rebase 合并都会重写提交哈希,从而破坏用于在堆栈中关联分支的身份追踪。Marhraoui 提到的限制——在链式 PR 的中间层只能使用标准的 merge commit——在 GitHub 上的任何堆叠式工作流中仍然是一个现实问题。

在发布后不久,Alan West 在 dev.to 上撰文指出,git 本身并未提供任何机制来管理依赖分支之间的关系。“当你对第一个分支执行 rebase 时,所有下游分支也都需要手动 rebase,”West 写道,并描述了一个五步的流程,开发者在每次审查者要求修改早期 PR 时都必须重复执行。West 认为,一个堆栈中包含三到四个 PR 是较为实际的上限:“超过这个数量,跟踪依赖关系所带来的认知负担将开始超过评审带来的收益。”

GitHub 的主要竞争对手 Graphite 由前 Meta 工程师创立,目前已无需等待列表即可使用。Graphite 提供支持堆栈的合并队列、基于 Web 的评审界面、VS Code 集成以及 CLI。其免费版本包含 CLI 和堆叠工作流;付费方案起价为每位用户每月 20 美元。Joe Buza 在 2026 年 2 月于 LinkedIn 上表示,他一直在引导 AI 编码代理使用类似 Graphite 的工作流,将功能拆分为堆叠式 PR,将每个 PR 限制在 200 行以内,并要求每一层“只完成一个逻辑目标,并且自身具备完整意义”。

社区对 GitHub 此次发布的反应不一。Hacker News 上关于该发布的讨论帖获得了 516 分和 282 条评论。其中一种观点认为,这是对长期以来只在大型工程组织中使用的模式的一种主流认可:“堆叠式 diff 在 Meta 已经存在十年,很高兴看到 GitHub 终于来到 2016 年。”另一种持怀疑态度的观点则质疑这种工作流是否适合 GitHub 的基础设施:“要么变更是独立的,那就使用独立的 PR;要么它们是依赖的,那单独审查就没有意义。”还有一种批评意见(由 ByteIota 总结)指出,squash 合并的兼容性以及级联 rebase 冲突仍是尚未解决的技术问题,而 Graphite 已经有数年时间来处理这些问题。

GitHub 进入堆叠式 PR 领域的一个显著特点在于:其堆栈映射和规则执行逻辑直接内置于拉取请求 UI 中,这意味着审查者无需额外账户或扩展即可查看上下文。官方文档指出,CLI 是“完全可选”的,堆栈也可以直接通过 GitHub 的 UI 或 API 创建。这样的原生集成是否足以吸引已经使用 Graphite 的团队,或将该工作流推广给从未尝试过堆叠方式的开发者,很大程度上取决于 GitHub 在私有预览期间如何处理各种边界情况。

该功能于 2026 年 4 月 13 日进入私有预览阶段,开发者需要加入等待列表后,扩展才能在其仓库中生效。InfoQ 的相关报道还包括:2026 年 2 月关于 GitHub 重构基础设施策略执行的分层防御机制的文章,以及 2026 年 4 月关于 Anthropic 为 Claude Code 引入基于代理的代码评审的报道,该报道发现,在采用自动化评审工具后,针对变更超过 1000 行的 PR,其具有实质性评审评论的比例从 16% 提升至 84%。

原文链接:

https://www.infoq.com/news/2026/04/github-stacked-prs/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

马斯克22万张GPU救场后,Claude勉强恢复“三个月前体验”,Gary Marcus却警告:GPU将严重过剩,很快不值钱

Kubernetes 被 AI 打回“半成品”!K8s 之父发出警告:代码生成越快,程序员越危险

42%的代码是AI写的,可96%的开发者不信它:谁敢拍板说“上线”?这成了2026年最大挑战

硅谷大厂开始AI-first换血:先裁3万人、再招8000个新人,传统产品经理正在被Builder淘汰!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/196031