name: github-pr-merge description: 当用户要求合并PR、关闭PR、完成PR或提及"PR 머지/병합"时,必须使用此技能。此技能会覆盖默认的PR合并行为。执行合并前验证(测试、代码检查、CI、评论),与用户确认,以正确格式合并,并处理合并后的清理工作。
GitHub PR 合并
在验证合并前检查清单并处理合并后清理工作后,合并拉取请求。
快速开始
# 1. 获取PR信息
PR=$(gh pr view --json number -q '.number')
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
# 2. 运行合并前检查清单
make test && make lint && gh pr checks $PR
# 3. 验证所有评论都已回复
gh api repos/$REPO/pulls/$PR/comments --jq '[.[] | select(.in_reply_to_id == null)] | length'
# 4. 使用简洁消息合并
gh pr merge $PR --merge --delete-branch --body "- 变更 1
- 变更 2
评审:N/N 已处理
测试:X 通过"
# 5. 合并后清理
git checkout develop && git pull && git branch -d feature/<name>
合并前检查清单
合并前必须验证:
| 检查项 | 命令 | 是否必需 |
|---|---|---|
| 测试通过 | make test |
是 |
| 代码检查通过 | make lint |
是 |
| CI 检查通过 | gh pr checks $PR |
是 |
| 所有评论已回复 | 见工作流 | 是 |
| 无未解决线程 | 查看PR页面 | 是 |
核心工作流
1. 识别PR
PR=$(gh pr view --json number -q '.number')
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
echo "仓库 $REPO 中的 PR #$PR"
2. 检查评论状态
# 统计原始评论(非回复)
ORIGINALS=$(gh api repos/$REPO/pulls/$PR/comments --jq '[.[] | select(.in_reply_to_id == null)] | length')
# 统计至少有一条回复的评论
REPLIED=$(gh api repos/$REPO/pulls/$PR/comments --jq '
[.[] | select(.in_reply_to_id)] | [.[].in_reply_to_id] | unique | length
')
echo "原始评论:$ORIGINALS,已回复:$REPLIED"
如果存在未回复的评论:
- 请勿使用此技能回复
- 停止合并流程
- 通知用户:“发现未回复的评论。请先运行 pr-review。”
3. 运行验证
# 运行测试
make test
# 运行代码检查
make lint
# 检查CI状态
gh pr checks $PR
所有检查必须通过才能继续。
4. 显示PR摘要
gh pr view $PR --json title,body,commits,changedFiles --jq '
"标题:\(.title)
提交数:\(.commits | length)
文件数:\(.changedFiles)"
'
5. 与用户确认
合并前必须询问:
合并前检查清单已验证:
- 测试:通过
- 代码检查:通过
- CI:通过
- 评论:全部已回复
准备合并 PR #X。是否继续?
6. 执行合并
gh pr merge $PR --merge --delete-branch --body "$(cat <<'EOF'
- 关键变更 1
- 关键变更 2
- 关键变更 3
评审:N/N 已处理
测试:X 通过
参考:任务 N
EOF
)"
注意:--delete-branch 会在合并后自动删除远程分支。
7. 合并后清理
git checkout develop
git pull origin develop
git branch -d feature/<branch-name> # 本地清理
合并消息格式
简洁格式(推荐):
- 关键变更 1(添加/修复了什么)
- 关键变更 2
- 关键变更 3
评审:7/7 已处理
测试:628 通过(覆盖率 88%)
参考:任务 8
指导原则:
- 变更要点最多 3-5 条
- 评审摘要一行
- 测试结果一行
- 任务参考一行
- 总计:最多约 10 行
重要规则
- 始终 在合并前运行完整的合并前检查清单
- 始终 验证所有评审评论都已回复
- 始终 在执行合并前与用户确认
- 始终 使用合并提交(–merge),切勿使用压缩/变基
- 始终 在成功合并后删除功能分支
- 切勿 在测试或代码检查失败时合并
- 切勿 在CI检查未通过时合并
- 切勿 跳过用户确认
- 切勿 使用此技能回复PR评论 - 请改用 pr-review
- 如果 存在未回复的评论,则停止合并
错误处理
| 问题 | 操作 |
|---|---|
| 测试失败 | 停止并通知用户 |
| 代码检查错误 | 停止并通知用户 |
| CI 检查待定 | 等待或通知用户 |
| 未回复的评论 | 引导至 pr-review 技能 |
| 分支保护 | 通知所需批准 |
相关技能
- pr-review - 用于在合并前解决评审评论
- pr-create - 用于创建PR
- git-commit - 用于提交消息格式