第 8 章 · Git 集成与代码审查
本章目标:掌握 Claude Code 与 Git 的深度集成——自动生成 commit message、分支操作、通过 GitHub CLI 创建 PR,以及利用 Claude 辅助代码审查。
8.1 自动 Commit Message
Claude Code 最常用的 Git 功能之一是根据暂存的改动自动生成有意义的 commit message:
bash
# 在交互模式中
> 帮我 commit 这些更改
# Claude 会:
# 1. 运行 git diff --cached 查看暂存内容
# 2. 分析改动语义(新增功能/修复 bug/重构)
# 3. 生成符合 Conventional Commits 的 message
# 4. 执行 git commit典型输出:
text
Claude 检测到 3 个文件的修改:
src/auth/login.ts | 42 +++++---
src/auth/types.ts | 12 ++++
tests/auth.test.ts | 28 +++++++
建议的 commit message:
feat(auth): add OAuth2 login flow with refresh token
- Implement OAuth2 authorization code flow
- Add token refresh mechanism with auto-retry
- Update TypeScript interfaces for auth types
- Include unit tests for login and refresh paths
确认提交?(y/n)Conventional Commits 规范
在 CLAUDE.md 中约定 commit 格式,Claude 会自动遵循:
markdown
## Git 约定
- 使用 Conventional Commits:feat/fix/docs/refactor/test/chore
- scope 用模块名:auth, api, ui
- 描述用中文,首行不超过 72 字符8.2 分支操作
bash
# 创建功能分支并切换
> 创建一个 feature/user-profile 分支
# 合并与冲突处理
> 把 main 的最新代码合并到当前分支,如果有冲突帮我解决
# Claude 处理冲突的方式:
# 1. git merge main → 发现冲突
# 2. 逐个读取冲突文件
# 3. 分析两边的修改意图
# 4. 给出合并建议或直接解决
# 5. 标记已解决并完成 merge commit变基操作
bash
> 把我的分支 rebase 到 main 上
# Claude 会检查是否有未推送的 commit,
# 执行 git pull --rebase origin main,
# 并处理可能的冲突。危险操作需谨慎
git reset --hard、git push --force、git rebase 等操作会不可逆地修改历史。Claude Code 默认会要求你确认这些操作。建议在 settings.json 中添加额外保护:
json
{
"permissions": {
"deny": [
"Bash(git push --force:*)",
"Bash(git reset --hard:*)"
]
}
}8.3 GitHub CLI 集成创建 PR
安装 gh CLI 后,Claude 可以完成完整的 PR 工作流:
bash
# 前提:安装并认证 gh CLI
brew install gh
gh auth login
# 让 Claude 创建 PR
> 推送当前分支并创建 PR 到 mainClaude 的执行流程:
text
1. git push -u origin feature/user-profile
2. gh pr create --title "..." --body "..."
├── 标题从 commit messages 提取
└── 正文自动包含:
- 变更摘要
- 测试情况
- 关联 issue(如果提到)
3. 返回 PR 链接自定义 PR 模板
markdown
<!-- CLAUDE.md 中约定 -->
## PR 约定
创建 PR 时使用以下模板结构:
### 变更说明 / ### 测试情况 / ### 截图(如有 UI 变更) / ### Checklist8.4 代码审查辅助
Claude Code 是强大的审查助手——它能读懂上下文而不仅仅是 diff。
审查未提交的代码
bash
> 审查我当前的改动,关注安全问题和性能隐患
# Claude 会:
# 1. git diff 查看变更
# 2. 读取相关文件获取完整上下文
# 3. 从安全性、性能、可维护性三个维度分析
# 4. 按严重程度排序输出发现输出示例:
text
📋 代码审查结果
🔴 高风险
├── src/auth/login.ts:45 — 密码明文存储在 session 中
│ 建议:使用 bcrypt 哈希后再存入
🟡 中等
├── src/api/users.ts:78 — N+1 查询问题
│ 建议:使用 join 或 eager loading
🟢 建议
├── src/utils/format.ts:12 — 可提取为公共函数复用审查他人的 PR
bash
> 审查 PR #42 的代码质量
# Claude 通过 gh 命令获取 PR 信息
gh pr view 42
gh pr diff 42
# 然后逐文件分析并给出审查意见8.5 Diff 解读技巧
当 Claude 展示大量改动时,学会快速定位关键信息:
bash
# 只看统计信息
> 这个分支改了多少文件?
# 聚焦特定类型的改动
> 列出所有新增的 API endpoint
# 对比两个版本
> 比较 v1.0 和 v2.0 tag 之间的差异,总结主要变化对于大型 diff,让 Claude 先给概览再深入细节比一次全读更高效:
text
你: 这个 PR 改了什么?
Claude: 这个 PR 包含 3 个主要变更:
1. 新增了用户偏好设置 API(4 个文件)
2. 重构了数据库连接池(2 个文件)
3. 修复了一个时区 bug(1 个文件)
要我详细看哪一部分?
你: 重点看数据库连接池的重构
Claude: [深入分析...]本章小结
- Claude 能根据 diff 自动生成符合规范的 commit message;
- 分支操作(创建/合并/rebase)和冲突解决都可以委托给 Claude;
- 配合
ghCLI 可以一键推送 + 创建 PR; - 代码审查按 🔴🟡🟢 三级输出,覆盖安全/性能/可维护性;
- 大型 diff 先要概览再深入特定区域更高效。
🧪 随堂测验
点击你认为正确的选项。答错时会展示正确答案与原因解析。
1. 让 Claude 生成 commit message 前,最关键的前置步骤是什么?
2. 为什么建议在 settings.json 中 deny git push --force?
3. 让 Claude 创建 PR 需要什么前置条件?
4. 面对一个改动了 50 个文件的大型 diff,最高效的审查策略是什么?
🛠️ 动手实践
- 在你的项目中做一个小改动,让 Claude 自动生成 commit message,评估其质量。
- 安装并认证
ghCLI,然后让 Claude 为你的项目创建一个测试 PR。 - 找一个开源项目的 open PR,让 Claude 帮你审查代码并输出结构化的审查意见。
完成练习后,进入下一章:自定义指令与配置。