Git 集成实战完全指南(三):自动化 Commit 与 PR


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

七、这一章的核心心得

  1. 提交信息要规范------约定式提交让 git log 一目了然
  2. Claude 自动生成提交信息------分析 diff,提取变更要点
  3. PR 描述可以自动填充------变更概述、文件列表、自测清单
  4. 批量操作提高效率------批量 cherry-pick、批量 squash
  5. PR 状态实时跟踪------CI 检查、Review 进度、合并条件
  6. Rebase 要小心------未推送的提交可以 rebase,已推送的不建议

八、下一步

学会了自动提交和创建 PR,但合并时经常遇到冲突。怎么处理合并冲突,让 Claude 帮你自动解决?

下一篇我们学习 Git 冲突解决。


系列目录:

  1. Claude Code 与 Git 的基础集成------自然语言操作 Git
  2. 智能分支管理------分支策略、自动创建、合并预防
  3. 自动化 Commit 与 PR------生成提交信息、创建 Pull Request ← 本篇
  4. Git 冲突解决------合并冲突的自动检测与修复(待写)
  5. Git Blame 与历史追踪------追溯代码变更的来龙去脉(待写)
  6. Git 标签与版本管理------Release 流程自动化(待写)
  7. Git 钩子自动化------pre-commit、pre-push 自动执行(待写)
  8. Git 团队协作最佳实践------PR Review、Code Review 流程(待写)
相关推荐
TDengine (老段)1 小时前
TDengine 函数完整参考 — 聚合、时序、字符串、时间、数学
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
初晴融雪-快雪时晴1 小时前
动产与不动产全景分析:从法律定义到资产配置
大数据·人工智能
AC赳赳老秦2 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
码农学院2 小时前
GEO效果维持的持续迭代机制与内容老化监控技术
大数据·人工智能
TDengine (老段)2 小时前
昆仑数智选择 TDengine TSDB,提升页岩气生产运行可视化与精细化管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
TMT星球2 小时前
金山办公持续落子AI办公:灵犀专业版、WPS Comate同日发布
大数据·人工智能·wps
陆水A2 小时前
【问数系统】SQL跑对了图表却空了?打通问数系统最后1公里的3个API坑
大数据·数据库·自然语言处理·big data·etl工程师
名侦探7222 小时前
构建 Agent 的五大难点与解决方案
java·大数据·人工智能
Elasticsearch2 小时前
Elastic: 将来一年中 AI 从活动转向成果
elasticsearch