Logo Vincent
返回文章列表

Claude Code /diff:这次对话改了什么,一目了然

Claude
Claude Code /diff:这次对话改了什么,一目了然

什么是 /diff

让 Claude Code 帮你写代码,几轮对话下来,它可能改了好几个文件。你知道大致做了什么,但不确定每个文件具体改了哪些行、加了什么逻辑。

/diff 就是用来看改动的。 它会弹出一个交互式面板,展示两种维度的代码差异:

  1. Current——当前工作区所有未提交的改动(git diff HEAD
  2. 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 生成的代码更有掌控感。

更多同类文章

© 2026 vincentqiao.com . 保留所有权利。