名称: PR描述生成 描述: 从差异和上下文中生成拉取请求标题和描述。在创建PR、编写PR描述、草拟合并请求或为审查总结更改时使用。
PR描述
从git差异、分支上下文和链接的问题中生成清晰、结构化的拉取请求标题和描述。
何时使用
- 用户即将打开PR或合并请求
- 用户询问PR描述、标题或更改摘要
- 用户希望记录分支的作用以供审查者参考
工作流
- 收集上下文: 当前分支、基础分支、
git diff、git log、提交消息 - 识别范围: 文件更改、更改类型(功能、修复、重构、文档)
- 检查问题: 分支名称或提交中的链接问题编号
- 草拟标题: 简短、命令式、约定式(例如
feat(auth): add OAuth2 login) - 草拟描述: 摘要、更改内容、原因、如何测试、清单
标题格式
首选约定式提交风格:
<类型>(<范围>): <简短描述>
类型: feat, fix, docs, style, refactor, test, chore
范围: 可选,例如 auth, api, ui
示例:
feat(auth): 添加Google OAuth2登录fix(api): 处理用户查找中的null值docs: 更新README安装步骤refactor(store): 迁移到Zustand
保持少于72个字符。结尾不加句号。
描述模板
## 摘要
[1-3句: 这个PR做了什么以及为什么]
## 更改
- [关键更改1]
- [关键更改2]
- [关键更改3]
## 相关
- 修复 #123
- 关联到 #456
## 如何测试
1. [步骤1]
2. [步骤2]
## 清单
- [ ] 测试已添加/更新
- [ ] 文档已更新
- [ ] 无破坏性更改(或在描述中列出)
包含内容
总是:
- 解释意图的摘要,不仅仅是文件名
- 有意义的更改列表(非每个文件)
- 如何测试(步骤或“手动: …”)
- 如果有,相关的问题
当相关时:
- 破坏性更改部分
- UI更改的截图
- 数据库/模式更改的迁移说明
- 性能或安全说明
避免:
- 将完整差异复制粘贴到描述中
- 模糊的摘要(“更新了内容”)
- 对非平凡更改缺少测试说明
收集上下文
# 分支和差异
git branch --show-current
git log main..HEAD --oneline
git diff main...HEAD --stat
git diff main...HEAD # 用于分析的完整差异
# 链接问题(来自分支名称或提交)
git log main..HEAD --oneline | grep -oE '#[0-9]+'
从更改的路径推断范围(例如 src/auth/ → 范围 “auth”)。使用提交消息强化意图。
语气
- 中立和事实性
- 审查者友好:使范围和验证方式易于理解
- 无营销语;无“这个惊人的PR添加了…”
反模式
- ❌ 仅重复票据号的标题(“JIRA-123”)
- ❌ 描述仅为“查看提交”
- ❌ 行为更改无测试步骤
- ❌ 每个触及文件的大量项目列表