什么是文本对比(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(新增)。
在线文本对比的步骤
- 打开 文本对比工具,在左侧输入框粘贴原始文本(旧版本)。
- 在右侧输入框粘贴修改后的文本(新版本)。
- 差异实时高亮:红色背景 = 删除的内容,绿色背景 = 新增的内容,黄色 = 修改的内容。
- 可切换行级对比(显示哪些行变了)和字符级对比(显示行内哪些字符变了)。
所有比对计算在浏览器本地完成,数据不会上传到任何服务器。
核心功能一览
行级 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。