← 返回博客

文本对比工具完全使用指南

2026-04-10 · 5 分钟阅读

什么是文本对比(Diff)

Diff(Difference)工具通过算法比较两段文本,识别出哪些行被添加(绿色高亮)、哪些行被删除(红色高亮)、哪些行保持不变。最常见的 diff 算法是最长公共子序列(LCS)算法,它能找到两段文本中最长的相同部分,以此推导出最小变更集。

文本对比的主要使用场景

行级对比 vs 字符级对比

大多数 diff 工具默认按行比较:如果一行的任何部分改变,整行都会被标记为删除并显示新行。字符级(词级)对比更细粒度,能在同一行内标出具体哪个词或字符发生了变化,对于文章修改追踪更实用。高质量的在线对比工具通常先进行行级对比,在差异行内再进行词级或字符级高亮,提供两层可见性。

忽略空白和格式差异

在对比代码或格式化文本时,空格和缩进的差异往往不是我们关注的重点(如代码自动格式化后的缩进变化)。专业的 diff 工具支持"忽略空白"选项,在比较时跳过仅有空白差异的行,只标出有实质内容变化的行。这对于对比经过自动格式化的代码特别有用。

命令行 diff 工具

# 基本 diff
diff file1.txt file2.txt

# 统一格式(更易读,+表示新增,-表示删除)
diff -u file1.txt file2.txt

# 忽略空白差异
diff -b file1.txt file2.txt

# 忽略大小写差异
diff -i file1.txt file2.txt

# 比较两个目录
diff -r dir1/ dir2/

# 生成可应用的 patch 文件
diff -u original.txt modified.txt > changes.patch
patch original.txt < changes.patch

Git 中的 diff 使用

Git 将 diff 功能内置于版本控制工作流中:git diff 显示工作区与暂存区的差异;git diff --staged 显示暂存区与上次提交的差异;git diff HEAD~1 HEAD 显示最近两次提交的差异;git diff branch1..branch2 比较两个分支。在 Pull Request 中,对比视图就是 diff 工具的图形化版本,代码审查员通过它了解每个文件的具体变化。

法律文件的对比追踪

合同和法律文件的版本追踪有特殊需求:需要清晰标出每个修改点,并通常需要保留修改记录供各方审阅。Word 的"修订追踪"功能是专门为此设计的,它会保留所有修改历史。对于 PDF 合同,需要先将两个版本的文字提取为纯文本,再用 diff 工具对比,但这样会丢失排版信息。专业法律文件对比工具(如 DraftablePDF 比较)能更好地处理这个场景。

立即免费使用相关工具

免费使用 →