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
- Claude Code /fast:同样的 Opus,两倍速——值不值?
- Claude Code /init:10 秒自动生成 CLAUDE.md
- Claude Code MCP:让 AI 连接 GitHub、数据库等一切工具
- Claude Code /model:Opus、Sonnet、Haiku 怎么选?
- Claude Code 使用指南:从安装到实战,一篇就够(2026)
- Claude 全家桶:从聊天到写代码到自动办公,一文讲清楚
- CCBot - 研发提效 24 倍
- 震惊!程序员用这个工具,4分钟干完95分钟的活!效率暴涨24倍
- Claude Code /add-dir:被低估的 Monorepo 神器
- Claude Code /compact:释放上下文,不丢进度
- Claude Code /btw 命令详解:不打扰主线的快问快答
- Claude Code /stats:看看 AI 到底帮你写了多少代码
- Claude Code /status 命令详解:一眼看清会话全貌
- AI-first 创业公司,为什么只需要一种编程语言?
- Claude Code 引用外部知识的最佳实践:GitHub MCP + Context7
- Claude Code 省 Token 小技巧:感叹号的妙用
- Claude Code /resume 命令详解:别让对话白聊
- Claude Code /usage 命令详解:你的额度还剩多少
- Claude Code /tasks 命令详解:后台任务尽在掌控
- Claude Code Skills 详解:打造你的专属命令库
- Claude Code /plan 详解:先想清楚再动手
- Claude Code /memory 详解:让 AI 真正记住你的项目
- cc-ping:一行命令 Ping 所有 Claude Code 配置
- Claude Code /config:一文搞懂所有可调设置
- Claude Code /permissions:谁能干什么,你说了算
- Claude Code /hooks:让 AI 按你的规矩办事
- Claude Code /review:让 AI 帮你做 Code Review
- Claude Code /context:你的上下文都被什么吃了?
- Claude Code /vim:在 AI 编程助手里用 Vim 键位
- Claude Code + Playwright MCP:AI 终于能"看见"页面了