GitHub 终于上线 Stacked PR:大改动拆成链式小 PR,AI 编程时代的代码审查新姿势
7 月 31 日,GitHub 正式推出 Stacked Pull Requests 公开预览。这个功能开发者们等了好几年——Facebook 用 Phabricator、Google 用内部工具早就有了,GitHub 一直没跟上。现在终于补上了,而且来得正是时候:AI 编程助手让代码产出量暴增,大 PR 审查瓶颈比以往更严重。
Stacked PR 是什么
简单说:把一个大改动拆成一串小 PR,每个 PR 只包含一层逻辑变更,PR 之间按依赖关系串成链条。
```
┌── feat/frontend → PR #3(基于 feat/api-endpoints) ← 顶层
┌── feat/api-endpoints → PR #2(基于 feat/auth-layer)
┌── feat/auth-layer → PR #1(基于 main) ← 底层
main
```
底层放基础变更(数据模型、数据库迁移),上层放依赖它们的代码(API 路由、UI 组件)。每个 PR 只显示自己那一层的 diff,审查者不用面对一整面代码墙。
为什么现在才重要
AI 编程助手(Copilot、Cursor 等)让单次会话产出大量代码变得很常见。一个 Agent 跑完可能生成几千行改动,塞进一个 PR 里基本没人能认真审。Stacked PR 给每段变更一个独立位置:Agent 完成一个任务,开一个新 PR 建在前一个上面,依赖关系自动记录。
GitHub 官方文档直接提供了 Copilot 集成教程,安装 gh-stack skill 后,Copilot Agent 可以自动创建和管理堆叠 PR。
怎么用
核心操作都在 GitHub CLI 的 gh stack 扩展里:
```bash
安装扩展
gh extension install github/gh-stack
如果要让 Copilot Agent 也能用
gh skill install github/gh-stack
初始化堆叠
gh stack init
添加新层
gh stack add BRANCH-NAME
推送所有分支
gh stack push
创建并关联 PR
gh stack submit
查看堆叠状态
gh stack view
```
也可以直接在 GitHub 网页上操作,移动端也支持。
关键能力
- 自动级联 rebase:底层 PR 合并后,上层分支自动 rebase 到新的基础分支,不用手动同步
- 独立审查:每个 PR 有自己的 diff,审查者可以并行审不同层
- CI 和分支保护正常工作:不像以前手动串 PR 时 CI 只触发最底层,现在每层都能正确触发检查
- 一键合并整串:从底层到顶层依次合并
当前限制
- 公开预览阶段,功能可能变化
- 不支持跨 fork 的堆叠(所有分支必须在同一仓库)
- 不支持 GitHub Desktop
- Merge Queue 支持将在未来几周逐步推出
- 需要 GitHub CLI 2.90.0 或更高版本
实际场景
假设你要给应用加用户认证,可以拆成四层:
- 数据模型和迁移 — 最底层,定义 User 表
- CRUD 接口 — 增删改查端点
- JWT 中间件和权限守卫 — 认证逻辑
- 集成测试和单元测试 — 最上层
每层一个 PR,审查者可以先审数据模型,确认没问题后再看接口层,不用一口气审完整个功能。如果某层需要改,修改只影响那一层和它上面的层,不会搞乱整个分支。
---
基于 GitHub 官方文档和多家媒体转述整理。Stacked Pull Requests 正在向所有仓库逐步开放,如果你还没看到这个功能,可能需要等几天。