Claude Code /diff:这次对话改了什么,一目了然
目录
什么是 /diff
让 Claude Code 帮你写代码,几轮对话下来,它可能改了好几个文件。你知道大致做了什么,但不确定每个文件具体改了哪些行、加了什么逻辑。
/diff 就是用来看改动的。 它会弹出一个交互式面板,展示两种维度的代码差异:
- Current——当前工作区所有未提交的改动(
git diff HEAD) - Per-Turn——按对话轮次拆分的改动记录
你不用切到另一个终端跑 git diff,也不用翻聊天记录去猜 Claude 改了哪些文件。
怎么用
/diff
不需要任何参数。输入后会弹出一个交互式对话框。
界面长什么样
顶部:数据源切换
Current . T1 . T2 . T3
- Current —— 当前工作区 vs HEAD 的 git diff,包括未暂存和未跟踪的文件
- T1、T2、T3… —— 每个对话轮次的改动(最新的在前)
用左右方向键在不同数据源之间切换。
中间:文件列表
选中一个数据源后,会列出该范围内所有被修改的文件:
> src/utils/auth.ts +15 -3
src/components/Login.tsx +42 -0
src/tests/auth.test.ts +28 -5
package.json +1 -0
每个文件显示路径和增删行数。未跟踪的新文件会标注 “untracked”,二进制文件标注 “Binary file”。
用上下方向键选择文件,按 Enter 查看详情。
底部:文件详情
按 Enter 进入单文件的详细 diff 视图:
- 带行号的逐行差异
- 单词级别的高亮——不只是标记整行为”增/删”,而是精确到哪些词被修改了
- 绿色标注新增内容,红色标注删除内容
- 超过 400 行的改动会截断显示
按左方向键或 Esc 返回文件列表。
快捷键一览
| 按键 | 作用 |
|---|---|
| ← / → | 切换数据源(Current / T1 / T2…) |
| ↑ / ↓ | 选择文件 |
| Enter | 查看选中文件的详细 diff |
| ← | 从详情返回列表 |
| Esc | 关闭对话框 |
两种数据源详解
Current:Git 视角
“Current” 标签页展示的是 git diff HEAD 的结果——也就是你当前工作区相对于最后一次提交的所有改动。
它的数据来源是真正的 git 命令:
git diff HEAD --numstat——获取每个文件的增删统计git diff HEAD——获取完整的 diff 内容git ls-files --others --exclude-standard——列出未跟踪的新文件
一些保护机制:
- 超过 500 个文件:只显示统计,不展示详情
- 单文件超过 1MB:跳过该文件
- 单文件超过 400 行改动:截断显示
- 合并/变基/cherry-pick 进行中:不显示 diff
- Git 超时:5 秒超时保护
这个视角适合在你准备提交之前,检查所有改动是否符合预期。
Per-Turn:对话轮次视角
“T1”、“T2” 等标签页展示的是 Claude Code 在每一轮对话中做的改动。
它的数据来源不是 git,而是对话消息本身。Claude Code 会从工具调用记录中提取 FileEdit 和 FileWrite 的结果,还原出每一轮的 diff。
这个视角的好处是:
- 可追溯——你能看到”第一轮 Claude 改了什么,第二轮又改了什么”
- 不受 git 状态影响——即使你中间做了手动修改或 git add,Per-Turn 视图仍然准确反映 Claude 的改动
- 最新轮次在前——方便你快速查看刚刚那一轮的改动
每个轮次的标签会显示你当时输入的消息预览(前 30 个字符),帮你回忆这轮在做什么。
典型使用场景
场景一:提交前检查
你:帮我重构 auth 模块,拆分成独立的 service 和 controller
(Claude Code 执行了多轮修改)
你:/diff
切到 “Current” 标签,检查所有文件的改动是否合理,确认没有意外的修改,然后放心提交。
场景二:逐轮审查
一个复杂任务,Claude Code 执行了 5 轮对话。你想知道每一步都做了什么:
/diff
从 T1 到 T5 逐个切换,回顾每一轮的改动,理解 Claude 的思路和执行过程。
场景三:配合 /review 使用
先用 /diff 看看当前改动,再让 Claude 审查:
/diff
(看完改动后)
帮我审查一下这些改动,特别关注安全性
场景四:配合 /rewind 使用
用 /diff 发现某一轮的改动有问题?可以用 /rewind 回退到那一轮之前的状态。/diff 的 Per-Turn 视图会自动适应——回退后,被撤销的轮次自动消失。
和其他命令的关系
| 命令 | 关系 |
|---|---|
/review | /diff 看改动,/review 审查 PR。一个看本地,一个看远端 |
/rewind | /diff 看每轮改动,/rewind 回退到某一轮。一个看,一个撤 |
/context | /diff 看代码改动,/context 看上下文占用。不同维度的”状态检查” |
/compact | 压缩上下文后,Per-Turn 的轮次记录仍然保留——/diff 从消息中提取,不受压缩影响 |
实用技巧
技巧一:养成提交前看 diff 的习惯
每次让 Claude Code 完成一个任务后,先 /diff 看一遍,再提交。这不是不信任 AI,而是好的工程习惯——你对合入的每一行代码都应该心中有数。
技巧二:用 Per-Turn 理解复杂任务
当 Claude Code 执行了一个多步骤的复杂任务,Per-Turn 视图让你能”复盘”整个过程。哪一步做了什么、为什么这么做,结合对话内容一目了然。
技巧三:关注 untracked 文件
Current 视图会列出未跟踪的新文件。如果 Claude Code 创建了你没预期到的文件(比如临时文件、配置文件),你能在这里及时发现。
技巧四:大项目用统计视图
如果 /diff 显示 “Too many files to display details”(超过 500 个文件),说明改动范围很大。这时候先看统计数据,决定是否需要分批提交。
写在最后
/diff 是一个简单但必要的工具。
它不做任何修改,不需要任何配置,只是让你看清楚 Claude Code 到底改了什么。在”让 AI 写代码”的流程中,这一步看似多余,实则关键——看懂改动,才是真正对代码负责。
习惯用 /diff,你会对 AI 生成的代码更有掌控感。
相关推荐
Claude Code Agent Loop:拆解 AI 编程助手的心脏
Claude Code 是怎么一步步理解你的需求、调用工具、自我修复的?从源码角度拆解 Agent Loop 的核心架构——流式响应、并行工具执行、自动压缩、错误恢复,一次讲透。
Claude Code settings.json 详解(一):配置文件在哪里、谁说了算
全面介绍 Claude Code 的配置文件体系——五个配置来源的路径、优先级规则、数组合并与单值覆盖的区别、企业管理设置的多种下发方式。
Claude Code settings.json 详解(二):permissions 权限系统全解析
深入解析 Claude Code 的 permissions 配置——allow/deny/ask 三类规则、通配符语法、MCP 工具权限、defaultMode 各模式含义,以及 additionalDirectories 的作用。
Claude Code settings.json 详解(三):hooks 钩子全解析
深入解析 Claude Code 的 hooks 配置——四种钩子类型、核心事件(PreToolUse/PostToolUse/Stop/Notification)、stdin/stdout 协议、exit code 语义,以及实用配置示例。
Claude Code settings.json 详解(四):env、模型、认证与其他实用字段
全面介绍 Claude Code settings.json 中的 env 环境变量注入、模型配置、身份认证辅助、Git 提交署名、会话清理、语言与界面、思考深度、自动更新、记忆系统等实用字段。