gh stack view完全参考:用--short和--json掌握Stack状态
2026/9/20 17:40:15 网站建设 项目流程

gh stack view完全参考:用--short和--json掌握Stack状态

【免费下载链接】gh-stackGitHub Stacked PRs项目地址: https://gitcode.com/GitHub_Trending/ghst/gh-stack

gh stack view是 gh-stack 堆叠 PR 工具中查看 Stack 状态的核心命令。一条命令列出当前 Stack 的所有分支、每个 PR 的合并/排队/开放状态和是否需要 rebase,并提供三种输出形态:交互式视图、--short紧凑视图和--json机器可读视图——前两者给人看,最后一种专为脚本和 AI Agent 设计 📊。

三种查看模式,各取所需

gh stack view的完整实现位于 cmd/view.go,三种模式一眼区分:

模式命令适用场景特点
交互式 TUIgh stack view日常开发全屏界面,支持鼠标,可切换分支
紧凑视图gh stack view --short快速扫一眼每个分支一行,带状态图标
JSON 输出gh stack view --json脚本/CI/AI无交互提示,带类型化退出码

无论使用哪种模式,命令都会先从 GitHub 同步一次 PR 最新状态再展示,所以你看到的就是当前真实状态,而不是本地缓存的旧数据。

默认交互视图:分支、提交、PR 一站看全

在交互式终端中直接运行gh stack view,会打开一个全屏 TUI(基于 Alt Screen 渲染,支持鼠标操作)。它会展示:

  • 📌 每个分支在 Stack 中的位置和当前分支(高亮)
  • 📝 每个分支的最新提交:短 SHA、相对时间(如 "3 days ago")和提交标题
  • 🔗 分支对应的 PR 链接
  • ✅ 状态图标(下一节详解)

在 TUI 中选定某个分支后退出,还可以直接把它 checkout 出来,省去再敲一次git checkout

在非交互式环境(如管道或 CI)中,命令会自动退化为静态文本输出,并通过分页器展示——遵循GIT_PAGERPAGER环境变量,默认less -R

--short 紧凑模式:分支状态一行看穿

gh stack view --short

--short(可简写为-s)输出紧凑的单行视图,是整个命令中信息密度最高的模式。它的结构自上而下是:

  1. Stack #N:Stack 编号(粗体),与 GitHub 界面上的编号一致
  2. 活跃分支区:当前分支以»开头并标注(current)
  3. queued分隔线:进入合并队列的分支
  4. merged分隔线:已合并的分支(灰色显示)
  5. └ main:底部的 trunk 分支

每个分支行后面还跟着彩色 PR 编号(绿色=开放,紫色=已合并),一眼定位要处理的 PR。

状态图标速查(四种图标,源码定义见 cmd/view.go 的branchStatusIndicator):

图标含义颜色
PR 已合并紫色
PR 已进入合并队列黄色
PR 处于开放状态绿色
分支需要 rebase(基分支不是其祖先)黄色

图标尤其值得关注:它说明 Stack 历史不线性了,此时运行gh stack rebase做级联 rebase 即可恢复。

--json 机器可读模式:把 Stack 状态喂给脚本和 AI

gh stack view --json

--json是自动化场景的瑞士军刀 🔧。它有两个关键设计(见 cmd/view.go 中runViewJSON):

  • 永不弹出交互式提示——Agent 和脚本总能拿到干净的机器可读输出
  • 返回类型化退出码——脚本可以据此分支处理,而不是解析错误文案

输出结构固定为三个顶层字段:

{ "trunk": "main", "currentBranch": "feat/02", "branches": [ { "name": "feat/01", "head": "bbb222", "base": "aaa111", "isCurrent": false, "isMerged": true, "isQueued": false, "needsRebase": false, "pr": { "number": 42, "url": "…", "state": "MERGED" } } ] }

字段速查表(完整字段行为见 cmd/view_test.go 中的断言):

字段说明
trunkStack 底部的 trunk 分支名
currentBranch当前所在分支
branches[].name/head/base分支名、HEAD 与基分支的 SHA
branches[].isCurrent是否为当前分支
branches[].isMerged/isQueuedPR 是否已合并 / 已入合并队列
branches[].needsRebase是否需要 rebase(已合并分支恒为false
branches[].pr.stateOPEN/MERGED/QUEUED三选一
branches[].pr无 PR 时整个字段省略,不会输出null

配合jq这类工具,"哪些分支需要 rebase"、"栈顶是哪个分支"这类问题都变成一行管道命令的事。

退出码速查:脚本怎么判断结果

gh stack view --json用不同退出码区分失败原因,便于自动化决策:

退出码含义建议处理
0成功正常解析 JSON
1一般错误记录日志
2不在任何 Stack 中 / 未找到 Stack提示先gh stack init
4GitHub API 调用失败检查认证或稍后重试
6需要消歧:当前分支属于多个 Stack先 checkout 一个非 trunk 分支再试

💡 退出码6是最容易踩的坑:当你在main上、且仓库里存在多个共用该 trunk 的 Stack 时就会触发。切到任意一个具体分支即可消除歧义。

实用搭配建议

  • 🧑‍💻日常开发:跑gh stack view看全景,跑之前先瞟一眼--short确认没有
  • 🤖AI Agent 集成:统一使用--json,靠退出码做分支判断,无需解析彩色文本
  • 🔁rebase 后验证gh stack rebase完成后再--json一次,确认needsRebase全部归零

命令的更多上下文(如syncrebase如何影响 view 展示的状态)可在 docs/src/content/docs/reference/cli.md 中查阅。

总结

gh stack view一个命令、三种形态,覆盖了 Stack 状态查看的全部场景:

需求用哪个
看提交、切分支、浏览 PR交互式 TUI
终端里快速确认状态--short+ 四种状态图标
脚本 / CI / AI Agent 消费状态--json+ 退出码

掌握它,你就随时知道自己的 Stack 走到了哪一步 ✅。

【免费下载链接】gh-stackGitHub Stacked PRs项目地址: https://gitcode.com/GitHub_Trending/ghst/gh-stack

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询