什么是文本对比(Diff)

Diff 是"difference"的缩写,它的核心任务很简单:给两段文本,找出它们之间的所有增、删、改。这看起来简单,实际上是计算机科学中的经典算法问题——最长公共子序列(LCS)。

举个例子,假设有两个版本的配置文件:

// 原始版本
server:
  port: 8080
  host: localhost
  debug: false

// 修改后版本
server:
  port: 3000
  host: 0.0.0.0
  debug: true
  timeout: 30

肉眼逐个比对费时易出错,而 Diff 工具能瞬间精准标出:port 从 8080 改为 3000(修改)、host 从 localhost 改为 0.0.0.0(修改)、debug 翻转为 true(修改)、新增了 timeout: 30(新增)。

在线文本对比的步骤

  1. 打开 文本对比工具,在左侧输入框粘贴原始文本(旧版本)。
  2. 在右侧输入框粘贴修改后的文本(新版本)。
  3. 差异实时高亮:红色背景 = 删除的内容,绿色背景 = 新增的内容,黄色 = 修改的内容。
  4. 可切换行级对比(显示哪些行变了)和字符级对比(显示行内哪些字符变了)。

所有比对计算在浏览器本地完成,数据不会上传到任何服务器。

核心功能一览

行级 Diff

以整行为单位标记增删改,清晰展示哪些行是新增、修改还是删除。

字符级 Diff

在行内精确定位到每个字符的变化,适合文档审校和微调对比。

并排 / 统一视图

并排视图左右对照、统一视图上下排列,切换你习惯的阅读方式。

纯本地计算

所有差异计算在浏览器中完成,文本不会被上传,确保数据安全。

行级 vs 字符级对比:什么时候用哪种

场景推荐模式原因
代码审查(PR review)行级快速扫哪些文件、哪些行有变更
文档修订审校字符级定位每个被改动的字词
配置文件对比行级配置项通常是按行组织的
日志输出对比行级关注哪些日志条目新增或消失

常见应用场景

  • 代码审查:对比 PR 前后的代码变更,逐行评审逻辑是否正确、是否有遗漏。
  • 配置文件排查:生产环境的配置文件出问题后,与上一个正常版本的配置做 Diff,快速定位是谁改了什么。
  • 文档版本管理:合同、协议、技术文档的修订版与原始版对比,确认所有修改点。
  • 日志分析:正常情况下的日志 vs 异常情况下的日志,找出多出或缺失了哪些日志条目。
  • 数据导出校验:两次导出的 CSV 数据对比,确认增量或变更是否正确。

常见问题 FAQ

行级对比和字符级对比有什么区别?

行级对比以行为单位标记差异——整行变了就高亮整行。字符级(也叫内联 Diff)在标记整行的基础上,进一步高亮行内具体哪些字/词发生了变更。简单说:行级告诉你 哪一行 变了,字符级告诉你这一行里 哪个字 变了。代码审查通常行级就够了,文档审校推荐字符级。

文本对比在线工具安全吗?数据会上传吗?

速工具 的文本对比完全在浏览器本地计算,文本内容不会被发送到任何服务器。但如果你需要对比包含商业机密的代码或文档,最安全的做法是使用 IDE 内置的 Diff 功能(如 VS Code 的对比文件)或 git diff,它们在完全离线环境中运行。

为什么对比结果显示"全部变化了"但实际只改了一处?

常见原因:① 换行符不一致(Windows 用 CRLF,Unix/Linux/macOS 用 LF),导致所有行被标记为变化——解决办法是统一转为 LF 或 CRLF 后再对比;② 缩进从空格变成了 Tab(或反过来);③ 文件编码不同。建议先将两边文本粘贴到纯文本编辑器(如记事本)中清理格式后再对比。

文本对比和 git diff 一样吗?

核心算法原理相同(都是基于最长公共子序列或其变体),但 git diff 更智能:它能识别文件重命名、检测代码块移动、显示所在函数名(diff hunk header)。在线文本对比工具更通用、不依赖 Git,适合任意两段文本,但缺少这些上下文感知能力。日常简单对比用在线工具,正式代码版本控制还是推荐 git diff。