首页/开发/Git 与协作速查/堆叠式 PR(stacked PR)
协作与代码评审75 条

堆叠式 PR(stacked PR)

把大改动拆成一串有先后依赖的 PR,每个都基于前一个分支:评审粒度小、可逐个合入,合并时按顺序从底部向上推进。

Git 与协作速查开发更新于 2026-10-13

堆叠式评审请求

堆叠式 PR 把一个大改动拆成一串有先后依赖的评审请求,每个都基于前一个分支。好处是评审粒度小、可以逐个合入,避免一个巨型请求长期挂着。代价是要维护分支链条:底部合入之后,上面几层必须重新对齐到新主干位置,否则差异里会混进已经合入的内容。

基本信息

结构后一个分支以前一个分支为基础,依次向前
合并顺序自底向上,下层先合入
同步方式用变基把上层分支重新落到新主干,可配合引用同步选项
工具支持引用同步选项可一次更新多条堆叠分支(较新版本 Git)

典型使用场景

  • 大改动按能力拆成若干小请求,逐层评审
  • 重构先行、功能随后,拆成两层避免一个请求混杂两类改动
  • 底层接口未定稿时,让上层先按假定的接口推进
  • 团队希望每个请求都能独立看懂、独立回滚
  • 需要较细的评审粒度,但不愿长时间等一次巨型评审

链条维护

链条维护
git switch feature/1
git rebase origin/main                    # 底部分支对齐主干
git rebase --update-refs origin/main      # 同步下游堆叠分支的引用
git branch -vv                            # 核对各层分支指向的提交
gh pr list --state open                   # 查看链条上的评审请求状态

什么时候做什么

时机动作注意事项
底部请求合入上层分支重新变基差异里不应再包含已合入的内容
底层被要求修改用引用同步选项更新上层逐层核对冲突
调整提交顺序用交互式变基先确认依赖方向再动手
平台不会自动处理顺序:底部请求合入之后,上层请求的分支需要重新指向新主干位置,否则差异会包含已经合入的内容。
链条越长维护成本越高,三层以上时最好配上引用同步选项与统一的分支命名约定,减少手工对齐的次数。

易错点

  • 顺序合并期间上层请求的描述与差异会变化,评审人需要重新核对范围
  • 临时调整顺序(先合上层)会造成依赖断裂,动手前确认依赖方向
  • 不带引用同步选项逐层手工变基,容易漏掉某一层,链条错位后冲突集中爆发
  • 堆叠层数过多,任何底层改动都要波及全部上层,维护成本迅速上升

数据来源与参考

  • GitHub Docs:About stacked pull requests(社区实践,平台文档)
  • Git 官方文档:git-rebase(--update-refs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌