Skip to content

第 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 --hardgit push --forcegit 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 到 main

Claude 的执行流程:

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 变更) / ### Checklist

8.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;
  • 配合 gh CLI 可以一键推送 + 创建 PR;
  • 代码审查按 🔴🟡🟢 三级输出,覆盖安全/性能/可维护性;
  • 大型 diff 先要概览再深入特定区域更高效。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. 让 Claude 生成 commit message 前,最关键的前置步骤是什么?

2. 为什么建议在 settings.json 中 deny git push --force?

3. 让 Claude 创建 PR 需要什么前置条件?

4. 面对一个改动了 50 个文件的大型 diff,最高效的审查策略是什么?

🛠️ 动手实践

  1. 在你的项目中做一个小改动,让 Claude 自动生成 commit message,评估其质量。
  2. 安装并认证 gh CLI,然后让 Claude 为你的项目创建一个测试 PR。
  3. 找一个开源项目的 open PR,让 Claude 帮你审查代码并输出结构化的审查意见。

完成练习后,进入下一章:自定义指令与配置