跳到正文

差异对比

Diff

中级通用

差异对比(Diff)是 Git 展示两个版本之间文件内容变化的方式,通常按行标出新增、删除和上下文。它帮你在提交或接收 AI 修改前,看清代码具体改了哪里,例如结账页的价格计算是否被动过。

你可能会说:「帮我看看 AI 刚改的代码到底动了哪些地方,别只告诉我改了几个文件。」

读之前建议先了解

动手看看

差异:+2 行 / -1 行

function checkoutTotal(price, quantity, discount) {
const subtotal = price * quantity;
- const total = subtotal - discount;
+ const shipping = 5;
+ const total = subtotal - discount + shipping;
return Math.max(total, 0);
}

这个例子演示 Git 的差异对比:结账总价多算了 5 元运费。对比会标出删除和新增的行,也保留没变的代码作为上下文。

试试把修改后的 const shipping = 5; 改成 const shipping = 0;,看看标出的内容怎么变。差异对比只看文字变化,不判断收费是否合理。

试试把修改后的运费行删掉,并把总价计算改回修改前的写法。两边内容相同时,增删标记就会消失。

要点

  1. 1

    先确认拿哪两个状态比较

    Diff 的结果取决于比较对象。比如,git diff 看工作区中尚未暂存的改动;git diff --cached 看已暂存、准备提交的改动。你先说清想检查哪一部分,才不会漏看另一部分。

  2. 2

    加减号表示内容如何变化

    Diff 通常按文件展示变化:行首的减号表示旧内容被移除,加号表示新内容被加入,旁边还会带一些未改动的行帮助定位。它告诉你文本怎么变了,不直接证明功能运行正确。

  3. 3

    留意它没有展示的内容

    只看 git diff,可能看不到已暂存的改动;尚未被 Git 跟踪的新文件也不会出现在普通的 git diff 结果里。比如 AI 新建了一个支付配置文件,你还得结合 git status 确认文件清单。

容易混淆的地方

Diff 是“比较后看到的变化”,提交(Commit)是把已暂存的内容记录进版本历史;看到 Diff 不等于已经提交。它也不是代码冲突:冲突发生在合并等操作中,Git 无法自动确定怎样整合两边的修改。你可以用 Diff 查看冲突附近的改动,但它不会替你决定保留哪种实现。

什么时候用

适合用

  • AI Agent 改完登录流程后,你想在提交前逐行检查它是否顺手改了权限判断。
  • 准备合并同事的结账页改动时,你想对照目标分支查看价格计算有哪些变化。
  • 修复一个文案问题后,你想确认暂存区里只有文案改动,没有夹带调试代码。

不适合用

  • 页面运行时才报错,你想知道报错从哪里传来;先看报错与调用栈,Diff 只能辅助追查近期改动。
  • 你想判断新版页面在手机上是否排版错乱;直接运行页面并检查不同屏宽,代码 Diff 不能替代视觉验证。
  • 你已经确认某次提交需要撤回;用重置或回退提交处理,Diff 只负责展示变化,不会撤销它。

练一练

AI 改了后台的订单筛选功能。你已经暂存了一部分文件,随后又继续修改了同一功能。现在只想检查暂存之后新增的改动,该看什么?

让 AI 帮你做

请先用 git status 确认文件状态,再分别展示未暂存和已暂存改动的 Diff。按文件说明关键变化,重点检查订单筛选条件和权限判断;如有未跟踪文件,单独列出。先不要提交或修改代码。

接下来学什么