gh-stack · v0.0.9 · 2026-09-05 · sha256 bbcccbefd2ac4c95
gh-stack v0.0.9A
Immutable. This exact content never changes and is served at /api/v1/blob/bbcccbefd2ac4c95.
--- name: gh-stack description: 使用 gh-stack GitHub CLI 扩展管理堆叠分支和拉取请求。适用于创建、推送、变基、同步、切换、查看、重组或合并相互依赖的 PR 链及堆叠差异。 compatibility: 需要 git、已认证的 GitHub CLI、网络访问和 github/gh-stack 扩展。 metadata: author: github version: "0.0.9" --- # 管理堆叠拉取请求 使用 `gh stack` 管理线性分支链,每个分支对应一个聚焦的 PR,并以下一层分支为基准。 ```text main -> data-models -> api -> frontend ``` 基础改动放在栈的下层,依赖它的使用方放在上层。无关工作使用独立的栈。 ## 前置检查 ```bash git rev-parse --git-dir git status --short gh --version gh auth status gh extension list | rg 'github/gh-stack' ``` 获得明确授权后安装: ```bash gh extension install github/gh-stack ``` 存在多个远端时,配置目标默认远端,或在支持的命令中传入 `--remote`: ```bash git config remote.pushDefault origin ``` ## 非交互规则 - 调用 `init`、`add` 和基于分支的 `checkout` 时始终传入分支名;省略参数可能触发交互提示。 - 始终使用 `gh stack submit --auto`;只有已准备好评审的 PR 才添加 `--open`。 - 始终使用 `gh stack view --json`;默认查看模式是交互式的。 - 使用常规 `git add` 和 `git commit`,明确控制每一层的改动。 - 修改较低层前先切换过去并在该层提交,然后运行 `gh stack rebase --upstack`。 - 分支由多个栈共享时,需要先检出一个无歧义的分支。 - 执行 `checkout <pr-number>` 前,必要时用 `gh stack unstack --local` 移除冲突的本地跟踪信息。 - 使用 `gh stack merge --yes` 合并;不要用 `gh pr merge` 替代堆叠 PR 的合并操作。 ## 常用流程 创建并提交一个栈: ```bash gh stack init data-models # 编辑,然后执行 git add 和 git commit gh stack add api # 编辑,然后执行 git add 和 git commit gh stack add frontend # 编辑,然后执行 git add 和 git commit gh stack submit --auto gh stack view --json ``` 修改较低层并更新依赖层: ```bash gh stack checkout api # 编辑,然后执行 git add 和 git commit gh stack rebase --upstack gh stack push gh stack view --json ``` 日常同步: ```bash gh stack sync gh stack view --json ``` 执行相关操作前,阅读 [完整命令参考](references/complete-reference.md),确认准确参数、栈链接、结构调整、冲突恢复、合并队列、退出码和各命令的具体行为。 ## 恢复边界 - 变基冲突:解决报告的文件并暂存,然后执行 `gh stack rebase --continue`;无法安全解决时用 `gh stack rebase --abort` 中止。 - 多栈歧义:检出一个明确且不共享的分支,不要猜测。 - GitHub API 失败:重试前检查认证和标准错误输出。 - 栈状态被锁定:重试前确认没有正在运行的 `gh stack` 进程。 - 仓库不支持堆叠 PR:报告限制,不要用无关命令模拟。 ## 验证 每次执行会修改状态的流程后,运行 `gh stack view --json`,验证分支顺序、基准分支、PR 状态和变基状态。报告实际命令及输出覆盖的范围,不要仅凭推送成功就宣称整个栈状态正常。