跳到内容

文本差异工具

逐行比较两段文本。新增行以绿色高亮,删除行以红色高亮。适用于配置文件、日志和代码比较。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式
如有问题或显示异常,请通过以下方式联系我们: 联系表单反馈给我们。

📖 常见的坑

比较两段文本,按行与按词高亮差异。全部处理在浏览器内完成,粘贴的内容不会被发送到任何地方。请注意「看不到差异」与「完全相同」并不是一回事:外观完全一致的两段文本,可能在换行符或不可见字符上不同;反过来,满屏的差异也可能只代表一处实质修改。

情形 会发生什么 怎么处理
所有行都显示为差异 几乎可以肯定是换行符不同。Windows 使用 CRLF,macOS 与 Linux 使用 LF,二者都不可见。同样的内容在另一台机器上重新保存一次,就足以让所有行被标记为已更改。Git 差异突然暴增时,请首先怀疑这一点。 请先用换行符转换把两侧统一为 LF 再比较。长期方案是在仓库根目录放置 .gitattributes 并写入 * text=auto eol=lf编辑器「保存时删除行尾空白」的设置也会产生同类差异,团队统一后会省心很多。
看起来一样却不匹配 其中混入了不可见字符。常见的有零宽空格(U+200B)、不换行空格(U+00A0)、全角空格(U+3000)、BOM(U+FEFF)。它们通常在从网页、PDF 或 Word 复制时混入,在字体上只是一个普通空格,或者根本不显示。全角与半角字母数字混用也会出现同样的症状。 切换到按词显示差异,问题位置会自行凸显。若已知混入来源,可用半角全角转换统一字母数字与空格;怀疑 BOM 时用乱码诊断确认编码。若复制来源是网页,先粘贴到纯文本编辑器再取用,是最省事的规避办法。
只是格式化,差异却看不懂 重新缩进、调整键顺序、运行格式化工具,语义上毫无变化,却会重写每一行。在这种状态下评审,真正的改动会被淹没在噪声里,很容易漏看。对 JSON 或 YAML 而言,仅仅调整键的顺序,就足以让按行比较的差异全军覆没 请把格式化与实质修改拆成不同的提交。能够在评审时说「这个提交只是格式化」,就是全部的收益。若只是想比较结构化数据,请用 JSON 差分而非按行比较——它会无视键顺序,只报告新增、删除与值变更。也可以在比较前先用 JSON 格式化把两侧统一为相同书写格式。

差异工具展示的是「字符串如何不同」,而非「语义发生了什么变化」。批量重命名变量的提交会让整个文件一片红绿,行为却分毫未变;反过来,把比较运算符从 < 改成 <= 这一个字符的差异,可能改变整个系统的行为。差异的体量与风险的大小之间没有任何相关性。唯一可靠的规律是:行数越多的差异越容易被草草掠过。

📖 使用方法

  1. 1
    左右两侧粘贴文本
    左侧粘贴旧版本,右侧粘贴新版本。
  2. 2
    查看差异
    新增为绿色,删除为红色。
  3. 3
    以 unified 格式复制
    点击"复制"以 Git 风格导出 unified diff。

❓ 常见问题

支持单词级差异吗?
目前仅支持行级别。
可以忽略空白吗?
启用"忽略空白"选项。
数据会发送吗?
不会。所有比较都在浏览器中进行。
有结构化 diff 吗?
先用 JSON 格式化工具排序 key,再比较。
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送