title: Git 集成实战完全指南(三)自动化 Commit 与 PR------生成提交信息与创建 Pull Request
date: 2026-07-10
category: AI 开发工具
tags: Claude Code, Git, Commit, Pull Request, 自动化
Git 集成实战完全指南(三):自动化 Commit 与 PR
提交信息怎么写?PR 描述怎么填?这些看似小事,实则最耗时间。本篇教你让 Claude Code 自动生成高质量的 Commit Message 和 Pull Request。
前言
每个开发者都有过这样的经历:
bash
# 随手一写
git commit -m "fix"
git commit -m "update"
git commit -m "改了点东西"
提交信息敷衍了事,后来回头看日志完全不知道改了什么。PR 描述也是一片空白,Review 的人一头雾水。
用 Claude Code,这些都可以自动化------分析你的代码改动,生成清晰的提交信息和 PR 描述。
一、智能 Commit Message 生成
1.1 约定式提交(Conventional Commits)
commit_message_format = <type>(<scope>): <subject>
type:
feat - 新功能
fix - Bug 修复
docs - 文档
style - 代码格式
refactor - 重构
test - 测试
chore - 构建/工具
1.2 让 Claude 自动生成
帮我生成提交信息
Claude 分析 git diff 后输出:
检测到以下改动:
- UserList.vue: 新增搜索功能 (+45行)
- user.ts: 新增搜索 API (+12行)
- user.ts: 修复分页 bug (-3行)
建议提交信息:
feat(user): 用户列表页新增搜索功能并修复分页问题
如果需要拆分提交:
提交 1: feat(user): 用户列表页新增搜索功能
提交 2: fix(user): 修复分页组件 pageSize 绑定错误
1.3 多语言提交信息
用中文写提交信息
Claude 输出:
feat(用户管理): 用户列表页新增搜索功能和状态列
或者英文:
write commit message in English
Claude 输出:
feat(user): add search functionality and status column to user list
1.4 批量提交
当一次改动涉及多个模块时,Claude 会建议拆分提交:
我有 5 个文件的改动,怎么组织提交?
Claude 分析后:
建议拆分为 3 次提交:
提交 1: feat(report): 新增日报统计页面
- src/views/Reports/Daily.vue
- src/api/report.ts
提交 2: feat(report): 新增周报和月报页面
- src/views/Reports/Weekly.vue
- src/views/Reports/Monthly.vue
提交 3: chore(deps): 升级 ECharts 到 v5
- package.json
二、自动化 Commit
2.1 一键提交
提交所有改动
Claude 自动执行:
bash
# 1. 分析改动
git diff --stat
# 2. 生成提交信息
# feat(user): 用户列表页新增搜索功能并修复分页问题
# 3. 确认
# 提交信息:feat(user): 用户列表页新增搜索功能并修复分页问题
# 确认提交?(y/N)
# 4. 执行
git add -A
git commit -m "feat(user): 用户列表页新增搜索功能并修复分页问题"
2.2 选择性提交
只提交 UserList.vue 和 user.ts 的改动,node_modules 除外
Claude 执行:
bash
git add src/views/UserList.vue src/api/user.ts
git commit -m "feat(user): 用户列表页新增搜索功能"
2.3 amend 提交
把刚才的提交信息改一下,加上 Jira 工单号
Claude 执行:
bash
git commit --amend -m "feat(JTCQK1-123): 用户列表页新增搜索功能"
2.4 撤销提交
撤销最后一次提交,但保留代码改动
Claude 执行:
bash
git reset --soft HEAD~1
撤销最后一次提交,并且丢弃代码改动
Claude 执行:
bash
git reset --hard HEAD~1
三、Pull Request 自动化
3.1 创建 PR
创建一个 PR 合并到 develop
Claude 自动执行:
bash
# 1. 确保分支已推送
git push -u origin feature/user-search
# 2. 使用 gh CLI 创建 PR
gh pr create \
--base develop \
--head feature/user-search \
--title "feat(user): 用户列表页新增搜索功能" \
--body "PR 描述自动生成..."
3.2 自动生成 PR 描述
Claude 会根据改动内容自动生成 PR 描述:
markdown
## 变更概述
本次变更在用户列表页新增了搜索功能和状态列展示。
## 主要改动
### 新增功能
- 用户列表页顶部新增搜索框,支持按用户名模糊搜索
- 表格新增"状态"列,展示用户活跃状态
- 新增搜索 API:`GET /api/users?username=xxx`
### Bug 修复
- 修复分页组件 pageSize 绑定错误(原值为字符串而非数字)
## 文件变更
| 文件 | 变更类型 | 说明 |
|------|---------|------|
| UserList.vue | 修改 | 新增搜索框、状态列 |
| user.ts | 修改 | 新增搜索 API、修复分页 |
| user.ts | 新增 | 新增 UserQuery 类型定义 |
## 自测清单
- [x] 搜索功能正常工作
- [x] 分页功能正常
- [x] TypeScript 编译通过
- [x] 无 ESLint 错误
## 截图(如有 UI 变更)
(暂无)
## 关联工单
- JTCQK1-123: 用户列表搜索功能
3.3 PR 模板
你可以在 .github/PULL_REQUEST_TEMPLATE.md 中定义模板,Claude 会填充:
markdown
## 变更类型
- [ ] 新功能(feat)
- [ ] Bug 修复(fix)
- [ ] 重构(refactor)
- [ ] 文档(docs)
- [ ] 测试(test)
- [ ] 构建/工具(chore)
## 影响范围
- [ ] 前端
- [ ] 后端
- [ ] 数据库
- [ ] 配置文件
## 测试情况
- [ ] 单元测试已通过
- [ ] 手动测试已通过
- [ ] 需要额外测试
## 备注
(其他需要说明的信息)
3.4 审查请求
创建 PR 并邀请张三和李四 Review
Claude 执行:
bash
gh pr create \
--base develop \
--head feature/user-search \
--reviewer zhangsan \
--reviewer lisi \
--title "feat(user): 用户列表页新增搜索功能"
四、PR 状态跟踪
4.1 查看 PR 状态
我的 PR 状态怎么样?
Claude 执行:
bash
gh pr list --state open --head feature/user-search
gh pr checks <PR_NUMBER>
输出:
📋 PR 状态跟踪
━━━━━━━━━━━━━━━━━━━━━
PR #42: feat(user): 用户列表页新增搜索功能
目标分支:develop
状态:✅ Open
CI 检查:
✅ TypeScript 编译通过
✅ ESLint 检查通过
✅ 单元测试 42/42 通过
⏳ 构建中...
Review:
✅ 张三:Approved
⏳ 李四:未审查
合并:等待李四 Review
4.2 更新 PR
我在 PR 里又加了一个提交
Claude 自动推送:
bash
# 在当前分支上修改
git add .
git commit -m "fix: 补充单元测试"
git push
# PR 自动更新
五、Cherry-pick 自动化
5.1 挑选提交
把 commit a1b2c3d 挑到 feature/user-search 分支
Claude 执行:
bash
git checkout feature/user-search
git cherry-pick a1b2c3d
5.2 批量挑选
把 develop 上的 3 个 fix 提交挑到 release/1.0 分支
Claude 先找到目标提交:
bash
# 查找最近的 fix 提交
git log develop --oneline --grep="fix" -3
然后批量 cherry-pick:
bash
git checkout release/1.0
git cherry-pick a1b2c3d e5f6g7h i8j9k0l
六、Rebase 自动化
6.1 交互式 Rebase
帮我 rebase 最近 3 次提交,把它们 squash 成 1 次
Claude 执行交互式 rebase:
bash
git rebase -i HEAD~3
# 自动将后两次标记为 squash
# 合并提交信息
6.2 安全 Rebase
把 feature/user-search rebase 到最新的 develop 上
Claude 先检查风险:
当前 feature/user-search 有 2 个未推送的提交:
a1b2c3d feat: 新增搜索功能
e5f6g7d fix: 修复搜索样式
rebase 会重写提交历史,确认执行?(y/N)
确认后执行:
bash
git fetch origin
git rebase origin/develop
七、这一章的核心心得
- 提交信息要规范------约定式提交让 git log 一目了然
- Claude 自动生成提交信息------分析 diff,提取变更要点
- PR 描述可以自动填充------变更概述、文件列表、自测清单
- 批量操作提高效率------批量 cherry-pick、批量 squash
- PR 状态实时跟踪------CI 检查、Review 进度、合并条件
- Rebase 要小心------未推送的提交可以 rebase,已推送的不建议
八、下一步
学会了自动提交和创建 PR,但合并时经常遇到冲突。怎么处理合并冲突,让 Claude 帮你自动解决?
下一篇我们学习 Git 冲突解决。
系列目录:
- Claude Code 与 Git 的基础集成------自然语言操作 Git
- 智能分支管理------分支策略、自动创建、合并预防
- 自动化 Commit 与 PR------生成提交信息、创建 Pull Request ← 本篇
- Git 冲突解决------合并冲突的自动检测与修复(待写)
- Git Blame 与历史追踪------追溯代码变更的来龙去脉(待写)
- Git 标签与版本管理------Release 流程自动化(待写)
- Git 钩子自动化------pre-commit、pre-push 自动执行(待写)
- Git 团队协作最佳实践------PR Review、Code Review 流程(待写)