merge-pr
Installation
SKILL.md
默认场景是 piw 创建的 worktree:分支 checkout 在独立 worktree 中,主仓库停留在 base 分支。合并在 worktree 内完成,清理阶段需要回到主仓库操作。按顺序执行。在阻塞问题、失败 CI 和合并前停下。PR 在 GitHub 栈里时走异步合并接口,自底向上逐层合并。
1. 确认 PR 与场景
- 用参数解析分支名或 PR 编号。没有参数则运行
git rev-parse --abbrev-ref HEAD。用gh pr list --head <branch> --json number,url --jq '.[0]'(已有 PR 编号则gh pr view <number>)定位 PR。找不到 PR 或当前分支是默认分支时,停止并说明原因。 - 识别 base(默认分支):
git remote show origin取 HEAD 分支。查询失败时用仓库中存在的main/master。 - 判断 PR 是否在栈里。在栈里就取出全栈,顺序自底向上:
gh api /repos/<owner>/<repo>/pulls/<PR号> --jq '.stack.number // empty'
gh api /repos/<owner>/<repo>/stacks/<栈号> --jq '.base.ref, ([.pull_requests[] | "\(.number) \(.head.ref) \(.state) \(.draft)"] | join("\n"))'
<owner>/<repo> 由 gh repo view --json nameWithOwner --jq .nameWithOwner 取。第一行空即普通 PR,走下面各步中标注“普通 PR”的路径。非空时第二行给出栈底分支与每层的 PR 号、分支名、状态和是否 draft。栈内时本次要落地的层 = 从最低未合并层到目标 PR(含)。
4. 用 git worktree list 识别场景:
- 当前目录不是主仓库(属于某个列出的 worktree),判为 worktree 场景(默认)。
- 否则判为普通场景。
- 分支有未推送提交(
git rev-list origin/<branch>..<branch>非空)时先git push origin <branch>。