用途:在当前分支上分析代码改动,使用 GitHub CLI(gh)创建结构清晰的 Pull Request。
主要能力:先校验是否处于 git 仓库、是否在非 main/master 的功能分支、gh 是否已认证,并提示未提交改动;检查该分支是否已有 PR,若存在打开的 PR 则报告其 URL 并停止,避免重复创建;自动探测基础分支(依次尝试 main、master,或 gh repo view --json defaultBranchRef 的默认分支),也支持按指令指定基础分支以用于堆叠 PR;通过 git log、git diff 收集改动上下文,并将改动归类为功能、修复、重构、依赖更新;查找 .github/PULL_REQUEST_TEMPLATE.md 作为正文模板并逐节填充,无模板时自行撰写说明。
标题格式:以 [TICKET-ID]: 简要描述 的形式,工单号必须位于标题最前,不超过 80 字符,工单号从分支名或提交信息中提取,且不得在工单号前加 feat:、fix: 等前缀。
使用方式:按流程执行 git rev-parse --is-inside-work-tree、git branch --show-current、gh auth status、git status --porcelain 等检查;用 gh pr list --head "$(git branch --show-current)" --state all --json number,title,state,url 查重;用 git log --oneline <base>..HEAD、git diff <base>..HEAD --stat、git diff <base>..HEAD 收集改动;将正文写入临时文件后执行 gh pr create --title "<title>" --body-file "$tmpfile" --draft [--base "<base_branch>"],随后用 gh pr view --web 在浏览器打开。
结果输出:成功时仅返回包含 pr_url、pr_number、title、status 的 JSON;失败时返回 status 为 failed 及 error_message。
限制与错误处理:不在 git 仓库、基础分支前无提交、gh 未安装或未认证、推送被拒等情形会给出对应提示;存在未提交改动时仅警告并继续,这些改动不会包含在 PR 中。其余细节暂未提供。