用途:gh-stack 是 GitHub CLI(gh)扩展,用于管理堆叠分支与堆叠 PR。堆叠是一组有序分支,每个分支基于其下一层分支,根为 trunk(通常是仓库默认分支);每个分支对应一个 PR,其 base 为下一层分支,因此审查者只看到该层 diff。底部最接近 trunk,顶部最远;up 远离 trunk,down 靠近 trunk。
主要能力:创建、添加、推送、rebase、同步、导航和查看堆叠;支持 init、add、push、submit、sync、rebase、view、up/down/top/bottom、checkout、unstack、link 等命令。submit 可创建草稿 PR,sync 可拉取、rebase、推送并同步 PR 与堆叠状态,--prune 清理已合并分支;squash-merge 后能自动检测并用 git rebase --onto 重放剩余提交。
使用方式:先安装 gh v2.0+ 并认证,执行 gh extension install github/gh-stack。建议配置 git config rerere.enabled true 与 git config remote.pushDefault origin。所有命令须非交互运行:init/add/checkout 必须提供分支名;submit 必须加 --auto;view 必须加 --json;多远程时用 --remote <name>。用标准 git add 与 git commit 控制每层提交内容。
适用场景:把大改动拆成链式小 PR;按依赖顺序分层(模型/API/前端/测试);中途修改下层后执行 gh stack rebase --upstack;响应审查反馈后 rebase 并 push;合并后 gh stack sync 同步。
限制:交互式命令会挂起,须避免无参数调用;分支名原样使用,不自动加前缀;跨多个堆叠共享的分支会导致退出码 6;本地与远程堆叠分叉时非交互环境会中止同步,需 unstack 后重建;冲突时 sync 会恢复原状并退出码 3,需手动解决后 gh stack rebase --continue。具体收费、平台支持等资料暂未提供。