本教程面向已经安装Claude Code但尚未系统掌握其Git协作能力的开发者。你将学会:如何让Claude Code自动生成规范的Commit Message、如何通过自然语言创建分支和PR、如何配置GitHub Actions实现自动化代码审查、以及如何让AI帮你解决合并冲突。学完后,你的日常Git工作流将从"手动敲命令"进化为"自然语言驱动"。
适用人群:有基本Git知识的开发者,已安装Claude Code,希望提升Git协作效率。
学习时长:约2-3小时(含实操练习)。
| 条件 | 说明 |
|---|---|
| Claude Code | 已安装并完成API认证(claude 命令可用) |
| Git | 2.30+,已配置 user.name 和 user.email |
| GitHub CLI | gh 命令已安装并完成 gh auth login |
| Node.js | 18+(Claude Code运行环境) |
| GitHub仓库 | 至少有一个可操作的远程仓库 |
检查环境是否就绪:
# 验证所有工具
claude --version
git --version
gh --version
node --version
# 验证Git身份配置
git config user.name
git config user.email
# 验证GitHub认证状态
gh auth status
预期输出:所有命令正常返回版本号,gh auth status 显示已认证。
Claude Code不是普通的命令行工具——它对Git仓库有原生感知。当你在一个Git仓库中启动Claude Code时,它会自动读取:
.gitignore 规则这意味着你不需要手动告诉Claude Code"我改了什么文件",它自己能看到。
# 进入你的项目目录
cd your-project
# 启动Claude Code交互模式
claude
启动后,你可以直接用自然语言操作Git:
> 查看当前Git状态
> 有哪些文件被修改了
> 显示最近的5条commit
Claude Code的Git安全护栏:Claude Code在执行Git操作时遵循严格的安全规则:
- 不会自动执行 git push
- 不会执行 git reset --hard 或 git push --force(除非你明确要求)
- 不会跳过pre-commit hooks
- 始终优先创建新commit而非amend旧commit
常见问题:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Claude Code拒绝执行git命令 | 权限模式设置为受限 | 使用 --allowedTools 或在设置中允许Bash工具 |
| 看不到Git状态 | 不在Git仓库中 | 先 git init 或进入已有仓库 |
| gh命令失败 | 未认证 | 运行 gh auth login |
这是Claude Code Git工作流的核心能力。传统方式下,你需要自己写commit message;而Claude Code会分析你的代码变更,自动生成语义准确的提交信息。
当你完成代码修改后,直接告诉Claude Code:
> 请帮我提交当前的修改
Claude Code会执行以下步骤:
git status 查看所有变更git diff 分析暂存区和未暂存的变更git log 了解项目的commit message风格一个典型的commit message输出:
feat: add user authentication with JWT tokens
- Implement login/logout endpoints
- Add token validation middleware
- Create user model with password hashing
- Add unit tests for auth flows
Co-Authored-By: Claude <[email protected]>
你可以指定只提交某些文件:
> 只提交 src/auth.ts 和 tests/auth.test.ts 的修改
或者指定commit message的风格:
> 按照conventional commits格式提交,scope是auth
Claude Code支持Conventional Commits规范,会自动识别变更类型:
| 前缀 | 含义 | 触发场景 |
|---|---|---|
feat: |
新功能 | 新增文件、新API端点 |
fix: |
修复 | 修复bug的代码变更 |
refactor: |
重构 | 不改变功能的代码重组 |
docs: |
文档 | README、注释变更 |
test: |
测试 | 新增或修改测试文件 |
chore: |
杂项 | 配置文件、依赖更新 |
为了让Claude Code始终遵循你的团队规范,可以在项目根目录的 CLAUDE.md 中添加:
## Git Commit规范
- 使用Conventional Commits格式
- commit message用中文描述
- 每条commit只做一件事
- 不要自动添加版本号前缀
- 提交前必须运行测试确保通过
- 不要提交 .env、credentials等敏感文件
这样每次Claude Code生成commit时都会自动遵守这些规则。
# 1. 修改一些文件(示例:添加一个新函数)
echo "export function validateEmail(email: string): boolean {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}" >> src/validators.ts
# 2. 启动Claude Code
claude
# 3. 在Claude Code中执行
> 提交新添加的邮箱验证函数
Claude Code的完整操作过程:
[Claude Code执行]
1. 运行 git status → 发现 src/validators.ts 被修改
2. 运行 git diff src/validators.ts → 分析变更内容
3. 运行 git log --oneline -5 → 了解commit风格
4. 生成commit message:
"feat: add email validation utility function"
5. 运行 git add src/validators.ts
6. 运行 git commit -m "feat: add email validation utility function
..."
7. 运行 git status → 确认工作区干净
预期结果:git log -1 显示格式正确的commit,工作区无未提交变更。
Claude Code可以帮你创建、切换和管理分支,而且比手动操作更安全——它会先检查是否有未提交的变更。
> 创建一个新分支 feature/user-profile,从main分支切出
Claude Code的操作流程:
1. git status → 检查是否有未提交的变更
2. 如果有未提交变更 → 提示你是否先stash或commit
3. git checkout main → 切回主分支
4. git pull → 拉取最新代码
5. git checkout -b feature/user-profile → 创建并切换到新分支
你可以用自然语言描述意图,Claude Code会生成规范的分支名:
> 我要修复登录页面的样式bug,帮我创建合适的分支
Claude Code可能会创建:fix/login-page-styling
> 把 feature/user-profile 合并到 main
Claude Code的操作流程:
1. git checkout main
2. git pull origin main
3. git merge feature/user-profile
4. 如果有冲突 → 进入冲突解决模式(见第七步)
5. git push origin main
注意:Claude Code不会自动push,会先确认你是否要推送到远程。
Claude Code与GitHub CLI (gh) 深度集成,可以直接从终端创建PR。
> 请帮我把当前分支的改动创建一个PR到main分支
Claude Code的完整操作流程:
1. git status → 确认所有变更已提交
2. git push -u origin feature/user-profile → 推送到远程
3. git log main..HEAD → 分析所有commit
4. git diff main...HEAD → 分析完整代码变更
5. 生成PR标题和描述
6. gh pr create → 创建Pull Request
生成的PR示例:
## 标题
feat: Add user profile page with avatar upload
## 正文
### Summary
- Add user profile page component with responsive layout
- Implement avatar upload with image preview
- Add profile editing form with validation
- Include unit tests for all new components
### Test Plan
- [ ] Verify profile page renders correctly on mobile/desktop
- [ ] Test avatar upload with various image formats
- [ ] Validate form submission with valid/invalid inputs
- [ ] Run full test suite: `npm test`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
你可以指定PR的详细要求:
> 创建一个PR,标题用英文,正文用中文,
> 重点关注这次的性能优化改动
## PR规范
- PR标题用英文,不超过70个字符
- PR正文包含Summary、Changes、Test Plan三个部分
- 自动关联相关的GitHub Issue
- 审查者默认指定 @team-lead
Claude Code提供了一个强大的Code Review插件,可以自动审查PR并在代码行内添加评论。
# 在项目根目录安装插件
claude install-plugin code-review
或者手动配置:
# 创建插件配置
mkdir -p .claude/plugins
cat > .claude/plugins/code-review.json << 'EOF'
{
"name": "code-review",
"version": "1.0.0",
"triggers": ["pull_request"]
}
EOF
Code Review插件采用多Agent并行审查架构——启动时会派出5个专业Agent,每个负责不同维度:
graph TB
subgraph "Code Review Plugin"
PR[Pull Request] --> Orchestrator[审查编排器]
Orchestrator --> A1[Agent 1: 正确性审查]
Orchestrator --> A2[Agent 2: 安全性审查]
Orchestrator --> A3[Agent 3: 代码风格审查]
Orchestrator --> A4[Agent 4: 测试覆盖审查]
Orchestrator --> A5[Agent 5: 性能审查]
A1 --> Merge[汇总审查结果]
A2 --> Merge
A3 --> Merge
A4 --> Merge
A5 --> Merge
Merge --> Comments[行内评论 + 总体评价]
end
各Agent的审查重点:
| Agent | 审查维度 | 关注点 |
|---|---|---|
| 正确性 | Bug检测 | 边界条件、空值处理、逻辑错误 |
| 安全性 | 漏洞扫描 | SQL注入、XSS、硬编码密钥 |
| 代码风格 | 可读性 | 命名规范、代码结构、复杂度 |
| 测试覆盖 | 测试质量 | 缺失测试、边界用例、Mock使用 |
| 性能 | 性能问题 | N+1查询、内存泄漏、不必要计算 |
你可以在本地对当前分支的变更进行审查:
> 审查我当前分支相对于main的所有变更
Claude Code会输出结构化的审查报告:
## Code Review Report
### Summary
发现 3 个问题(1 个高优先级,2 个低优先级)
### 🔴 高优先级
**src/auth/login.ts:42**
> 检测到潜在的SQL注入风险。`userId` 参数直接拼接到SQL查询中,
> 建议使用参数化查询:
> ```typescript
> // 修改前
> db.query(`SELECT * FROM users WHERE id = '${userId}'`)
> // 修改后
> db.query('SELECT * FROM users WHERE id = $1', [userId])
> ```
### 🟡 低优先级
**src/utils/validator.ts:15**
> `validateEmail` 函数的正则表达式不支持国际域名(IDN),
> 考虑使用更全面的验证方案或第三方库如 `validator.js`。
**tests/auth.test.ts:88**
> 测试缺少对并发登录场景的覆盖,建议补充边界条件测试。
Claude Code也支持交互式审查——你可以逐个文件、逐个问题地讨论:
> 审查 src/auth.ts,重点关注安全问题
> 第42行的SQL注入,帮我修复它
> 修复后重新运行相关测试
claude-code-action 是Anthropic官方提供的GitHub Action,可以在PR和Issue中通过 @claude 触发AI操作。
在你的GitHub仓库中创建 .github/workflows/claude.yml:
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude-review:
if: |
github.event_name == 'pull_request' ||
contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
max_turns: 5
# 在仓库中添加Anthropic API密钥
gh secret set ANTHROPIC_API_KEY
# 粘贴你的API Key后按回车
配置完成后,在PR评论中输入:
@claude 请审查这个PR的代码变更
Claude Code Action会: 1. 检出代码 2. 分析PR的所有文件变更 3. 在PR中添加审查评论 4. 如有问题,在具体代码行添加行内评论
更多触发方式:
@claude 这个文件有安全漏洞吗?
@claude 帮我补充缺失的单元测试
@claude 解释一下这个函数的逻辑
@claude 重构这段代码使其更可读
你可以在项目中创建 .claude/CLAUDE.md 来指导Action的审查行为:
# .github/workflows/claude-advanced.yml
name: Claude Advanced Review
on:
pull_request:
types: [opened, synchronize]
jobs:
claude-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--append-system-prompt "你是代码审查专家。重点关注安全性、性能和可维护性。用中文回复。"
max_turns: 8
claude-code-action还可以监听CI失败并自动尝试修复:
name: Claude CI Fix
on:
workflow_run:
workflows: ["CI"]
types: [completed]
# 当CI失败时触发
jobs:
auto-fix:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
CI失败了,请分析失败日志并自动修复问题。
修复后创建一个新的commit。
合并冲突是Git协作中最头疼的问题之一。Claude Code可以理解冲突双方的含义,智能地合并代码。
当你遇到合并冲突时:
> 帮我解决当前的合并冲突
Claude Code会:
1. 运行 git status 识别所有冲突文件
2. 读取每个冲突文件的冲突标记(<<<<<<<, =======, >>>>>>>)
3. 分析两边的代码变更意图
4. 智能合并(而非简单地选择一方)
5. 展示解决方案供你确认
6. 确认后执行 git add 标记冲突已解决
> 解决冲突,优先保留我们的改动(ours)
> 解决冲突,尽量合并两边的逻辑,不要丢弃任何一方的功能
# 1. 创建冲突场景
git checkout -b feature/a
echo "const version = '1.0.0';" > config.js
git add config.js && git commit -m "set version to 1.0.0"
git checkout main
echo "const version = '2.0.0';" > config.js
git add config.js && git commit -m "bump version to 2.0.0"
git merge feature/a # 产生冲突!
# 2. 启动Claude Code解决冲突
claude
> 解决config.js的合并冲突,保留更高的版本号
Claude Code的解决过程:
1. 读取 config.js 冲突内容:
<<<<<<< HEAD
const version = '2.0.0';
=======
const version = '1.0.0';
>>>>>>> feature/a
2. 分析意图:HEAD版本是2.0.0,feature/a是1.0.0
3. 用户要求保留更高版本号
4. 解决方案:保留 2.0.0
5. 生成合并后内容:const version = '2.0.0';
6. 等待用户确认后 git add config.js
对于涉及代码逻辑的复杂冲突,Claude Code会分析双方意图后提出合并方案:
> src/api.ts 有冲突,两边都修改了 handleRequest 函数,
> 请合并两边的改动——一方添加了认证逻辑,
> 另一方添加了错误处理,两个功能都需要保留
让我们把上述所有步骤串联起来,完成一个完整的"从功能开发到PR合并"的实战。
你在开发一个任务管理应用,需要添加"任务优先级"功能。
cd task-manager-app
claude
> 我要添加任务优先级功能,支持高/中/低三个级别,
> 请创建合适的Git分支
Claude Code:
我将创建分支 feature/task-priority。
[执行]
git checkout main
git pull origin main
git checkout -b feature/task-priority
> 添加任务优先级功能。需要:
> 1. 在Task模型中添加priority字段(枚举:high/medium/low)
> 2. 添加设置和获取优先级的API端点
> 3. 在前端显示优先级标签(红色/黄色/绿色)
> 4. 编写单元测试
Claude Code会创建所有需要的文件并实现功能。
> 审查一下所有改动,看看有没有问题
Claude Code:
审查发现 2 个问题:
1. [低] priority默认值建议设为'medium'而非'low'
2. [建议] 建议添加priority变更的审计日志
> 修复第一个问题,提交所有改动
Claude Code:
[执行 git add, git commit]
commit feat: add task priority feature with high/medium/low levels
> 创建PR到main分支
Claude Code:
[执行 git push -u origin feature/task-priority]
[执行 gh pr create]
Created PR #42: feat: Add task priority feature
https://github.com/your-org/task-manager-app/pull/42
PR创建后,你在Step 6中配置的GitHub Actions会自动触发:
sequenceDiagram
participant Dev as 开发者
participant CC as Claude Code
participant GH as GitHub
participant GA as GitHub Actions
participant Review as AI审查
Dev->>CC: 创建功能分支
CC->>GH: git push
Dev->>CC: 创建PR
CC->>GH: gh pr create
GH->>GA: PR opened 事件触发
GA->>Review: 启动AI代码审查
Review->>GH: 发布审查评论
Dev->>GH: @claude 补充测试
GH->>GA: 评论事件触发
GA->>Review: Claude生成测试代码
Review->>GH: 推送测试commit
Dev->>GH: 合并PR
在PR页面上,审查者或AI审查可能提出修改意见:
> PR #42 的审查意见说需要在API端点添加参数校验,
> 请修复并推送
Claude Code:
[修改 src/api/tasks.ts 添加参数校验]
[git commit -m "fix: add priority validation to API endpoint"]
[git push origin feature/task-priority]
> PR #42 已经通过了所有审查和CI,请合并到main
Claude Code:
确认以下操作:
- 合并 PR #42 (feature/task-priority → main)
- 使用 squash merge 保持主分支历史整洁
是否继续?[Y/n]
[确认后执行]
gh pr merge 42 --squash --delete-branch
graph TB
subgraph "本地开发环境"
A[自然语言指令] --> B[Claude Code]
B --> C{Git操作类型}
C -->|提交| D[智能Commit Message]
C -->|分支| E[分支管理]
C -->|审查| F[本地Code Review]
C -->|冲突| G[合并冲突解决]
end
subgraph "GitHub远程协作"
D --> H[git push]
E --> H
H --> I[Pull Request]
I --> J[claude-code-action]
J --> K[多Agent并行审查]
K --> L[行内评论]
L --> M{审查结果}
M -->|通过| N[合并到Main]
M -->|需修改| O["@claude 自动修复"]
O --> I
end
subgraph "CI/CD集成"
N --> P[CI Pipeline]
P -->|失败| Q[Claude自动修复]
Q --> R[修复Commit]
R --> P
P -->|通过| S[部署完成]
end
style B fill:#FF6B35,color:#fff
style J fill:#7B68EE,color:#fff
style K fill:#4ECDC4,color:#fff
style S fill:#2ECC71,color:#fff
症状:Claude Code说"我无法执行此操作"或操作被阻断。
原因与解决:
# 检查当前权限模式
claude config list
# 方法1:使用--allowedTools允许特定操作
claude --allowedTools "Bash(git:*),Bash(gh:*)"
# 方法2:在.claude/settings.json中永久配置
# 允许Git和GitHub CLI命令
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(gh:*)"
]
}
}
解决方案:在 CLAUDE.md 中明确定义commit规范:
## Commit规范
- 格式:`<type>(<scope>): <subject>`
- type只能是:feat, fix, docs, style, refactor, test, chore
- subject不超过50个字符
- body每行不超过72个字符
- 不使用emoji
- 不添加Co-Authored-By行
# 重新认证
gh auth login
# 选择 GitHub.com → HTTPS → 浏览器登录
# 验证
gh auth status
# 如果token过期
gh auth refresh -h github.com -s repo,workflow
常见原因及解决方案:
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
ANTHROPIC_API_KEY not found |
未配置Secret | gh secret set ANTHROPIC_API_KEY |
Permission denied |
权限不足 | 在workflow中添加 permissions 字段 |
Rate limit exceeded |
API调用频率过高 | 减少 max_turns 或添加触发条件 |
# 限制审查的文件范围和Agent轮次
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
max_turns: 3
# 只审查特定目录的变更
claude_args: |
只审查 src/ 目录下的代码变更。
忽略自动生成的文件和第三方库。
当一次修改涉及多个功能时,让Claude Code按逻辑拆分commit:
> 我这次的修改包含三个独立功能:
> 1. 用户登录优化
> 2. 数据导出功能
> 3. UI样式调整
>
> 请拆分成三个独立的commit
> 读取 GitHub Issue #15 的内容,创建分支并实现功能,
> 完成后创建PR并关联这个Issue
Claude Code会:
1. gh issue view 15 读取Issue描述
2. 创建分支 feature/issue-15-xxx
3. 实现功能
4. 创建PR并关联 Closes #15
> 审查最近10条commit的message质量,
> 看看有没有不符合规范的
> 帮我整理最近5条commit:
> - 把第3条和第4条合并
> - 第2条的消息修改为"fix: correct date formatting"
> - 按时间重新排序
注意:Claude Code默认不会执行 git rebase -i(需要交互式终端),但可以通过 git rebase --onto 等非交互方式实现等效操作。
在 .claude/settings.json 中配置Hooks,让Claude Code在提交前自动执行检查:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash(git commit*)",
"command": "npm run lint && npm test",
"description": "提交前运行lint和测试"
}
]
}
}
当Claude Code尝试执行 git commit 时,会先运行lint和测试,只有通过后才允许提交。
| 维度 | 评估 |
|---|---|
| 适合训练营类型 | Git工作流训练营、AI辅助开发训练营、团队协作效率提升 |
| 预计教学时长 | 3-4小时(含实操) |
| 难度等级 | 中等(需要Git基础) |
| 实操占比 | 70%(大量动手练习) |
| 推荐班级规模 | 15-20人 |
| 所需基础设施 | 每人一台开发机,GitHub账号,Anthropic API密钥 |
| 建议分组方式 | 2-3人一组,模拟团队协作场景 |
第1小时:环境验证 + 智能Commit + 分支管理
第2小时:PR创建 + Code Review实操
第3小时:GitHub Actions配置 + 合并冲突练习
第4小时:综合实战(模拟完整开发周期)
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
