![]()
AI辅助开发工具正在以前所未有的速度生成大量代码,这给代码审查人员带来了巨大压力——他们不得不面对规模越来越大的拉取请求(Pull Request)。在曾经探讨过限制AI辅助代码提交的可能性之后,GitHub如今转而帮助企业以更加渐进的方式管理大规模代码变更。GitHub宣布推出一项名为"堆叠PR"(Stacked PRs)的新功能,通过将大型变更拆分为更小的单元,提升代码审查的速度与质量。
"大型拉取请求难以审查、合并缓慢、容易产生冲突。审查人员容易丢失上下文,反馈质量随之下降,整个团队的效率也会受到拖累。"GitHub在其官网发布的公告中如此表示。
借助堆叠式审查方式,GitHub旨在通过减少变基(rebasing)操作、提升堆叠变更间持续集成(CI)与策略的可见性,以及保留审查上下文来提升代码质量,从而降低管理有依赖关系的拉取请求的负担。
GitHub在相关文档中解释称,堆叠PR功能会追踪栈中各请求之间的关联关系,自动传播变更,使开发者无需频繁进行变基操作,同时让审查人员能够在完整上下文中评估每个步骤。
GitHub介绍,该功能通过名为"gh-stack"的GitHub CLI新扩展插件来实现,负责管理本地工作流,包括分支创建、变基、推送变更,以及以正确的基础分支(base branch)发起拉取请求。
在前端界面方面,所有通过gh-stack创建的变更都会呈现在GitHub界面中,审查人员可以通过栈图(stack map)进行导航浏览,每一层均以聚焦的差异视图(diff)呈现,并遵循标准规则与检查流程。
开发者可以合并单个拉取请求,也可以合并整个堆叠(包括通过合并队列方式),合并完成后,剩余的未合并变更将自动完成变基,确保下一个待合并的PR指向正确的基础分支。
Pareekh Consulting首席分析师Pareekh Jain认为,堆叠PR是GitHub对大型单一代码库(monorepo)和平台工程领域结构性变革的回应——这一趋势正推动团队走向更加模块化、并行化的工作方式。
"GitHub传统的PR模型制造了瓶颈:开发者要么等待漫长的审查周期,要么将工作打包成庞大且难以审查的PR,由此带来更高的风险并拖慢合并速度。堆叠式方案解决了这一问题,允许开发者将一个功能拆分为更小的有依赖关系的PR,例如数据库层、API层和UI层,从而在开发并行推进的同时实现渐进式审查。"Jain说道。
Jain还指出,"堆叠PR很可能在中大型企业、尤其是管理单一代码库的团队中迅速普及。其最大的价值在于消除'变基地狱'——即当基础分支发生变更时,需要手动更新多个依赖分支的繁琐工作。"他补充表示,该功能同时集成于GitHub CLI和网页界面,也将因此减少对第三方工具的依赖,进一步推动采用率的提升。
HFS Research首席执行官Phil Fersht认为,堆叠PR推广的最大障碍不在于代码本身,而在于开发者习惯的改变。"限制因素不是功能本身,而是开发团队能否调整工作纪律,真正规范地使用堆叠方式。"
这意味着,团队需要学习如何将大型拉取请求有条理地拆分成堆叠结构供审查人员查阅,而这本身的难度可能并不亚于审查一个大型PR。
智能体AI软件初创公司Doozer AI联合创始人Paul Chada对此表示认同:"工作流的转变只有在不改变的痛苦超过学习的摩擦时才会发生。"
堆叠PR的发布,恰逢软件开发领域正经历更深层的结构性变革:AI辅助编程的兴起正在加速代码生成速度,增大变更规模,使传统的线性审查流程愈发难以为继。
"AI辅助编程改变了这道算术题。当代码由人类编写时,大型PR令人烦恼,但尚在可接受范围内,"Chada说,"而如今,智能体可以在数秒内生成跨越40个文件、多达2000行的代码差异,GitHub今年预计将迎来140亿次提交,而去年这一数字仅为10亿次。这已经不是工作流问题,而是一场生存危机。"
Chada表示,GitHub似乎在押注于堆叠PR能够重塑开发团队对软件开发单元的认知——使其变得更小、可归因、可回滚,无论代码作者是一位资深工程师还是一个智能体。
但他同时警告,将堆叠PR与编程智能体整合,可能会加剧企业工具链的混乱局面。
"当前的开发工具链——IDE、Copilot、Claude Code、Codex、堆叠工具、审查机器人、CI/CD、安全扫描器、MCP服务器——正处于'寒武纪大爆发'阶段,"Chada指出。
事实上,GitHub堆叠PR并非全新概念:目前已有若干第三方工具与GitHub配合使用,提供类似功能。
Jain认为,GitHub原生引入该功能将对Graphite CLI产生较大冲击——Graphite是一款专注于GitHub的工具,在该功能尚未原生支持时就已提供堆叠PR的能力。
"Graphite一直是这一细分领域的市场领导者。GitHub的入局验证了堆叠类别的价值,但也对Graphite的核心价值主张构成了生存威胁,"Jain说,"为了生存,Graphite可能需要在更优越的UI/UX体验、更快的性能,以及GitHub不会触及的功能(如面向GitLab和Bitbucket的跨平台堆叠)上加倍投入。"
这种竞争压力也折射出更宏观的平台竞争逻辑。
Jain进一步指出,堆叠PR代表着GitHub的一步"战略棋局"——将那些长期被Google、Meta、Uber等高速迭代团队所采用的工作流内化于自身平台,这与Phabricator等工具所推广的堆叠式差异(Stacked Differentials)代码审查模型一脉相承。
堆叠式差异与堆叠PR类似,是一系列小型、相互依赖的代码变更,各自独立接受审查,但彼此构建于对方之上,最终作为一个完整整体落地。
由此可见,GitHub正试图通过让企业在其平台内原生采用这些高级工作流,减少对外部工具的依赖,从而将用户从竞争对手处吸引过来。
Chada还指出,其中还潜藏着一个更为低调的平台经济逻辑。
"GitHub实际上正在构建基础设施,以承接大量机器生成活动所带来的流量冲击——这些活动目前尚未转化为相应的收入:既包括与GitHub自家Copilot竞争的第三方编程智能体,也包括这些智能体正在加速推进的各种工作流,"Chada表示。
从这个角度看,堆叠PR既是一次应对规模扩张的基础设施响应,也是一次开发体验的升级——并且可能预示着GitHub货币化其AI层方式的转变,Copilot的定价模式未来也可能逐步向更多基于用量的计费方式演进。
Q&A
Q1:GitHub堆叠PR功能是什么?它解决了什么问题?
A:GitHub堆叠PR(Stacked PRs)是一项将大型代码变更拆分为多个小型、相互依赖的拉取请求的新功能。它的核心目标是解决大型PR难以审查、合并缓慢、容易引发冲突的问题。通过gh-stack这一CLI扩展插件,开发者可以自动管理分支依赖关系、减少变基操作,审查人员也可以在完整上下文中逐层评估每个变更单元,从而提升代码审查的速度和质量。
Q2:堆叠PR会对Graphite等第三方工具产生什么影响?
A:GitHub原生支持堆叠PR后,对专注于此功能的第三方工具Graphite CLI构成了较大冲击。分析师指出,GitHub的入局验证了"堆叠"这一工作方式的价值,但也对Graphite的核心竞争力形成威胁。Graphite若要生存,可能需要在UI/UX体验、性能优化以及跨平台(如GitLab、Bitbucket)支持等GitHub不会涉足的差异化方向上持续投入。
Q3:堆叠PR推广的最大障碍是什么?
A:最大的障碍不是技术本身,而是开发者工作习惯的改变。研究人员和行业人士指出,团队需要学会将大型拉取请求有条理地拆分为堆叠结构,这本身就需要一定的工作纪律和流程调整。正如Doozer AI联合创始人所说,工作流的转变只有在"不改变的痛苦超过学习摩擦"时才会真正发生。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.