文本比对工具(Diff)

免费在线文本比对工具。在浏览器中逐行比较两段文本,准确看出新增、删除和修改的内容,并可将结果复制为统一格式补丁。

文本比对工具做什么


文本比对工具把同一段文本的两个版本对齐,标出它们之间的改动。两个版本都有的行保持原样;只在第一个版本中出现的行标为删除,只在第二个版本中出现的行标为新增。你得到的是一份简短的改动清单,而不是两个需要自己并排细读的长文件。

什么时候需要它


每当两样东西本该相同而其中之一却不同时:在一台服务器上能用、换一台就出错的配置文件,有人悄悄改过的合同条款,以前一直干净的日志,逐渐偏离原文的译文。把两个版本从头读到尾既慢又靠不住——眼睛会漏掉一个改过的数字。比对不会漏。

如何看懂结果


符号含义
该行在两段文本中相同,仅作为上下文显示。
-该行只存在于原始文本中。
+该行只存在于修改后的文本中。
@@标记一段改动的开始,并给出它在各自文本中覆盖的行号。

这些是统一格式(unified format)的符号,与 diff -u、git 和 patch 所用的完全一致。本页生成的补丁可以保存为文件,用这些工具应用。

使用方法


比对在你的浏览器中完成。你粘贴的内容不会被发送到任何地方——这一点很重要,因为人们要比对的文件往往正是不该上传的那些:凭据、合同、客户数据。

  1. 把原始版本粘贴到第一个框,把修改后的版本粘贴到第二个框。
  2. 选择是否忽略大小写和空白——当两个文件出自不同编辑器时很有用。
  3. 阅读标记出的行,或复制统一格式补丁,把这次改动应用到别处。

常见问题


我的文本会上传到服务器吗?
不会。比对完全在你的浏览器中用 JavaScript 完成。本页不发送任何内容,也不保存任何内容。

我只加了一个空格,为什么说整行都改了?
因为默认情况下比对是严格的。打开“忽略空白”后,仅在缩进或空格上不同的行会被视为相同——显示的内容仍然是每个文件的本来面貌。

可以直接比较文件而不是粘贴文本吗?
用任意编辑器打开文件,全选后粘贴到这里。本页比较的是文本,所以凡是能当作文本读取的内容都可以比较:代码、CSV、日志、JSON、普通文章。

Windows 和 Unix 的换行符会有问题吗?
不会。CRLF 和 LF 被当作同一种换行处理,所以在 Windows 上保存的文件不会显示成每一行都改过。

补丁有什么用?
它就是 diff -u 生成、git 和 patch 能读取的统一格式。把它保存成文件,就能把这次改动原样应用到原文件的另一份副本上;也可以附在工单里,让别人看到你改了什么。

Wikipedia — diff
Wikipedia — Unified format
Wikipedia — Longest common subsequence
Wikipedia — Patch (computing)
Wikipedia — File comparison