SuperAPI AI 工具集

gh-stack

通用与其它

查看项目

更新于 10-15 21:06

技能介绍

用途:gh stack 是 GitHub CLI 扩展,用于管理堆叠分支和堆叠 PR。一个 stack 是以 trunk 为根的有序分支链,每个分支只有一个基于其下方分支的 PR,评审者只看到该层 diff。视图按 trunk 优先从左到右打印,如 (main) <- auth <- api <- frontend,左为底层先合并,右为顶层后合并;up 向上(远离 trunk),down 向下。

主要能力:init 创建 stack 并检出其分支;add 添加基于当前分支的下一层;submit 推送所有分支并开草稿 PR(加 --open 创建可评审 PR);view --json 读取状态;sync 拉取、与 GitHub 对账、变基、推送并刷新 PR 状态,加 --prune 删除已合并 PR 的本地分支;rebase --upstack 将上方分支重放到改动上;merge 合并 PR 及其下方未合并 PR,或合并整个 stack,操作是全有或全无。

安装:gh extension install github/gh-stack;git config rerere.enabled true;多远程仓库需 git config remote.pushDefault origin。

非交互用法:分支是否 TTY 会影响行为,应始终传显式标志。用 gh stack view --json(非 view)、gh stack submit --auto、gh stack merge <target> --yes --squash、gh stack init <branch>...、gh stack add <branch>、gh stack checkout <target>、gh stack up/down/top/bottom;switch 仅菜单,modify 仅 TUI。

常用流程:gh stack init auth;git add ... && git commit -m "Add auth middleware";gh stack add api;gh stack submit --auto;gh stack view --json。

限制:stack 严格线性,一父至多一子,并行工作用独立 stack。无 gst 非交互重排或移除,modify 仅 TUI,重组需 unstack 后 init。PR 标题正文自动生成,之后用 gh pr edit 修改。checkout <branch-name> 只解析本地 stack。多远程时 push、submit、sync、rebase、link 须带 --remote <name> 或配置 remote.pushDefault;checkout 与 trunk 无 --remote。view --json 输出到 stdout,状态消息到 stderr,应依据退出码判断:0 成功,1 通用错误,2 不在 stack 中,3 变基冲突,4 GitHub API 失败,5 参数无效,6 需消歧,7 已有 rebase 进行中,8 文件被锁定,9 仓库未启用堆叠 PR,10 需 modify 恢复。冲突恢复:rebase 后解决文件并 git add,再 gh stack rebase --continue,或 --abort 还原;sync 后 stack 已还原,先 gh stack rebase 重现冲突再处理。gh stack <command> --help 是权威参考,gh stack help <command> 无效。