Claude Code Git 工作流的重点,不是让 AI 自动提交更多代码,而是让每一次 AI 辅助修改都能被人类开发者清楚审查、可靠验证、必要时安全回滚。很多人已经会让 Claude Code 写代码,但真正进入团队协作时,问题往往出在分支混乱、提交边界不清、验证记录不足和 review 成本过高。

如果你已经习惯用 Claude Code 处理多文件任务,可以先把它放进一个更稳定的开发闭环:先定义任务边界,再选择分支策略,再让 Claude Code 修改文件,最后由你审查 diff、运行验证并决定是否提交。上一篇 Claude Code 实战工作流 讲的是从需求到交付的整体流程,这篇更聚焦 Git、commit 和代码审查这条协作链路。

先明确:Claude Code 不应该替代你的 Git 判断

Claude Code 可以读 diff、改文件、运行命令,也可以帮你整理提交说明。但 Git 判断仍然应该由人负责,尤其是三件事:

环节人类应该负责什么Claude Code 适合做什么
分支判断任务是否需要独立分支检查当前分支和未提交改动
提交决定哪些文件属于同一提交整理 diff 摘要和提交信息草稿
审查判断改动是否符合业务目标帮你定位影响面和潜在遗漏
验证决定什么证据足够上线运行命令、打开页面、记录结果
回滚判断是否需要回滚或拆分解释改动来源和可能影响

真正危险的不是 Claude Code 会改代码,而是它把多个不相关的目标混在一个 diff 里。比如你让它修一个按钮文案,它顺手改了 layout;你让它补一个测试,它顺手重构了工具函数。这样的改动即使能跑,也会让 review 变得困难。

所以 Claude Code Git 工作流的第一条原则是:不要把 Git 当成收尾动作,而要从任务开始就设计提交边界。

开始前先检查分支和工作区

在真实项目里,Claude Code 开始动手前,应该先确认两件事:当前分支是否合适,工作区是否已经有未提交改动。

如果你在一个长期项目里直接让它开改,很可能出现这种情况:

  1. 你本来有未完成的本地改动。
  2. Claude Code 新增了一批文件修改。
  3. 两类改动混在一起,最后很难判断哪些该提交。
  4. 如果出现问题,也很难只回滚 AI 这次改动。

更稳的做法是,在任务开头就说明边界:

场景建议做法
小修复保持当前分支,但先确认未提交改动是否相关
新功能使用独立功能分支,避免和其他任务混在一起
线上紧急修复分支名和提交信息明确标记修复目标
探索性改动不急着提交,先作为实验 diff 保留
大范围重构先拆计划,不让 Claude Code 一次改完

如果项目里已经有未提交文件,先让 Claude Code 说明这些文件是否和当前任务有关,而不是直接覆盖、删除或重置。对 AI 编程来说,保护已有工作比快速生成新代码更重要。

任务边界要能映射到 commit 边界

一个好的 Claude Code 任务,最好天然能形成一个清晰 commit。不是所有任务都必须立刻提交,但它的边界应该足够清楚,让你未来提交时不用重新整理。

例如下面这些任务边界比较清晰:

  • 修复文章列表页 SEO title 格式。
  • 为某个 CLI 参数补充错误提示。
  • 给一个工具页补齐 metadata 和结构化数据。
  • 为一个已知 bug 添加回归测试并修复。
  • 新增一篇内容草稿,不修改站点主题。

这些任务都能回答:改了什么、为什么改、怎么验证。

相反,下面这些任务就不适合直接交给 Claude Code 一次完成:

  • “优化整个项目结构”。
  • “顺便清理一下代码”。
  • “把这个页面变好看”。
  • “检查所有问题并修掉”。
  • “把 SEO 做到最好”。

这些目标可能最终也需要 Claude Code 参与,但不能直接作为一个 Git 工作单元。你需要先拆成可审查的小块。关于 AI 生成代码的验收标准,可以结合 AI 生成代码审查清单 一起使用,避免只看“能不能跑”。

让 Claude Code 先读 diff,再解释改动

Claude Code 改完文件后,不要马上提交。更好的下一步是让它基于 diff 做一次自我说明:哪些文件被改了,每个文件为什么改,哪些行为应该发生变化,哪些地方没有动。

这一步的价值不是让 AI 自夸,而是帮助你快速建立 review 地图。

一个有用的 diff 说明应该包含:

项目应该说明什么
改动范围涉及哪些文件、模块或页面
行为变化用户或系统会看到什么不同
未改范围明确哪些逻辑没有动
验证方式用什么命令或页面证明改动生效
风险点哪些地方可能需要人工重点看

如果 Claude Code 的说明和你看到的 diff 不一致,要相信 diff,而不是相信说明。AI 对自己刚做的改动也可能概括错误,尤其是在长任务、多轮修复或中途切换方向之后。

提交前检查:不要只跑一个无关命令

Claude Code 很容易把“运行了测试”写进总结,但你要看测试是否真的覆盖这次改动。比如改的是 UI 页面,却只跑了一个工具函数测试;改的是 SEO metadata,却只跑了格式化;改的是 CLI 行为,却只 import 了内部函数。这些都不能算充分验证。

提交前至少要回答三个问题:

  1. 这次改动的真实入口是什么?
  2. 我有没有让改动从真实入口执行过?
  3. 输出结果能不能证明用户会看到正确行为?

不同类型任务的验证方式不一样:

改动类型更合适的验证
UI 页面构建后打开页面,检查标题、按钮、状态和链接
CLI 工具从命令行执行真实命令,观察输出和退出码
API 路由请求实际接口,检查响应体和错误路径
内容文章跑内容检查、构建站点、确认生成页面
自动化脚本用真实输入跑一遍,不只调用内部函数

这里最容易犯的错,是把类型检查或单元测试当成全部验证。它们很重要,但不一定证明改动对用户真的生效。Claude Code 的优势之一是可以帮你运行命令和记录输出,所以不要只让它写代码,也要让它参与验证闭环。

代码审查时重点看“边界”和“多余改动”

审查 Claude Code 生成的 diff,不要只看代码是否漂亮。更重要的是看它有没有越界。

可以按这个顺序 review:

  1. 任务是否完成:原始需求有没有被解决。
  2. 范围是否收敛:是否只改了该改的文件。
  3. 行为是否可验证:有没有明确验证证据。
  4. 测试是否有证明力:测试是否覆盖真实行为,而不是只测 mock。
  5. 命名和结构是否可维护:是否引入临时命名、过度抽象或重复逻辑。
  6. 安全和权限是否变化:是否增加文件、网络、命令、凭据相关风险。

其中“范围是否收敛”尤其重要。很多 AI 生成代码的问题不是语法差,而是动了太多地方。一个小任务如果牵出十几个文件修改,就应该停下来问:这是需求真的需要,还是工具在过度发挥?

如果你正在比较 Claude Code 和 Cursor 的协作方式,可以参考 Claude Code vs Cursor:怎么选适合你的 AI 编程工具。Cursor 更适合局部编辑,Claude Code 更适合把任务推进到验证状态,但两者都不能替代人工 review。

commit 信息要写“为什么”,不是罗列文件名

很多人让 Claude Code 生成 commit message 时,会得到很机械的结果:更新页面、修复问题、优化代码。这类信息在几天后几乎没有价值。

更好的 commit message 应该回答:这次改动为什么存在,它解决了什么问题。文件名和具体代码可以从 diff 里看到,提交信息应该补充上下文。

例如:

较弱的写法更好的写法
update article pagefix article category title to match SEO format
improve footeralign footer navigation with calculator entry points
add testsprevent article route fallback from regressing
fix bugpreserve static export fallback for trailing slash routes

如果项目偏中文提交,也可以写得直接一些:

较弱的写法更好的写法
优化修正文章分类页 SEO 标题格式
修改代码补齐静态导出文章路由 fallback
更新内容新增 Claude Code Git 工作流文章草稿

Claude Code 可以帮你总结 diff,但最终提交信息最好由你确认。尤其是团队项目里,commit message 是未来排查问题、回滚代码和理解演进路线的重要线索。

处理冲突时,不要让 AI 盲目合并

Git 冲突是 Claude Code 可以帮忙处理、但不应该完全托管的场景。因为冲突不只是文本冲突,很多时候是意图冲突:两个分支改了同一段代码,背后可能代表不同的产品判断。

如果遇到冲突,比较稳的流程是:

  1. 先让 Claude Code 解释冲突双方分别改了什么。
  2. 找出哪些改动是格式差异,哪些是行为差异。
  3. 让它提出保留方案,但不要直接套用。
  4. 人工确认后再编辑冲突文件。
  5. 合并后重新运行与冲突区域相关的验证。

不要只说“帮我解决冲突”。这会让 Claude Code 倾向于生成一个能合并的文本版本,但不一定保留正确业务行为。

尤其是配置文件、路由表、权限规则、SEO metadata、数据库迁移和构建脚本,冲突合并必须更谨慎。能合并不代表语义正确。

团队协作里要保留验证记录

如果你只是个人项目,验证记录可以简单一些。但在团队协作里,Claude Code 参与的改动最好留下明确证据:运行了什么、看到了什么、还有哪些没有覆盖。

一个清晰的交付摘要可以包含:

项目示例
改动摘要“修正文章分类页标题格式,并移除不明确的 workflow 文案”
验证命令“运行文章测试和构建”
实际结果“测试通过,构建生成静态页面”
手动检查“本地打开 /articles 和 /articles/ 均返回 200”
未执行事项“未发布、未提交 URL、未 push”

这类记录对 review 很有帮助,因为 reviewer 不需要猜你验证过什么。它也能防止 Claude Code 把“应该没问题”写成“已经验证”。在 AI 编程流程里,验证记录越具体,团队越容易接受 AI 辅助提交。

一个更稳的 Claude Code Git 工作流

把上面的内容压缩成一个日常流程,可以是这样:

  1. 明确任务目标、项目范围和禁止事项。
  2. 检查当前分支和未提交改动。
  3. 让 Claude Code 先定位相关文件和影响面。
  4. 将任务拆成能对应 commit 的小块。
  5. 每次只让它改一个方向。
  6. 改完先读 diff,不急着提交。
  7. 运行真实入口验证,而不是只跑无关测试。
  8. 人工审查范围、边界、测试和安全影响。
  9. 由人确认 commit message 和提交范围。
  10. 保留验证记录,必要时再进入下一轮。

这套流程看起来比“让 AI 直接写完”慢一点,但长期会更快。因为它减少了混乱 diff、无效 review、不可复现 bug 和无法解释的提交。

Claude Code Git 工作流的核心不是自动化所有 Git 操作,而是把 AI 的产出放回人类开发流程里。分支让任务隔离,commit 让改动可追踪,review 让边界可控,验证让结果可信。把这四件事串起来,Claude Code 才不只是一个生成代码的工具,而是一个能参与真实协作的软件工程助手。