ToolConvoyToolConvoyv2.6
TEXT

文本对比 — 逐行比较两段文本

比较两段文本并高亮差异。逐行 diff,标记新增、删除和未改动的行 —— 全部在你的浏览器中处理。

● 本地运行 · 剪贴板友好页面加载以来工具发出的网络请求:0 次

文本 diff 是历史最悠久、原理却从未改变的开发工具的产物。diff 命令由 Douglas McIlroy 和 James Hunt 在 1970 年代初为 Unix 撰写,此后的每一个版本控制系统 —— RCS、CVS、Subversion、Git —— 都把核心比对引擎建立在同一算法之上:在两串行序列中找出最长公共子序列(LCS),把不属于该子序列的行报告为新增或删除。文本对比工具在浏览器中实现了同样的算法,输出格式也沿用每个开发者都熟悉的样子:带颜色编码的 unified diff。

最常见的用例是比较文件的两个版本 —— 改动前后的配置文件、两次不同运行输出的日志片段、为更清晰而重写的一段文字。按行 diff 是大多数文本的正确默认;按词 diff 则适用于未被换行的长行 —— 改动只是一个词或值,而按行 diff 会把整行标为已修改。「忽略空白」开关适合格式化器只调整了缩进、并未改变逻辑的代码。输出的内容,无论是作为 unified diff 文本复制出去,还是在带颜色编码的视图中阅读,都和驱动了五十年代码评审的诊断完全一样。

广告

使用方法

  1. 粘贴原始文本和修改后的文本

    把两个版本分别粘贴到左右两个面板。diff 随输入实时更新 —— 每一行都会与对侧比较,按新增、删除或未改动进行着色。如果顺序粘反了,用交换按钮把两侧对调。

  2. 选择 diff 算法

    在「按行」(速度快,适合散文和配置文件)和「按词」(速度较慢,适合压缩 JSON、URL 查询字符串之类的长行)之间选择。按词 diff 会在被修改的行内高亮精确变动的词。

  3. 复制或导出 diff

    复制 unified diff 格式以便粘贴进 git commit、代码评审或工单。可视化 diff 带颜色编码并带有 ARIA 标注,屏幕阅读器可访问。

常见问题

什么是 unified diff?

unified diff 格式是 `diff -u` 和 `git diff` 产出的标准格式。它在每处变更周围展示若干上下文行,行前缀为 `+`(新增)、`-`(删除)或空格(未改动),并以一行文件头注明文件名和行偏移。

它会忽略空白变化吗?

会 —— 切换「忽略空白」后,只在缩进或末尾空格上有差异的行会被视为相同。切换「忽略空行」后,两侧都为空的行会被跳过。这两个选项在比较格式化过的代码时很有用 —— 那里的空白变化通常是噪声。

能比较超过两个版本吗?

不能。本工具只能精确比较两段文本。三路合并比对(共同祖先、版本 A、版本 B)请用 `git merge-file` 或专门的合并工具。两路对比足以应付最常见的场景:改前/改后、原始/提案、生产/预发。

文本最大能有多大?

上限取决于浏览器内存 —— 通常每个输入几十 MB。超过 10 MB 的文件,diff 计算会变慢。按行算法的复杂度是 O(N*D),其中 N 是总行数,D 是差异数。

限制说明

  • 无法合并本工具只显示差异,不能产出合并结果。要合并文件的两个分歧版本,请用 `git merge` 或三路合并工具。diff 是诊断,merge 才是操作。
  • 不支持二进制 diff只处理文本内容。二进制文件(图片、PDF、编译产物)无法用基于行的 diff 得出有意义的比较。比较二进制请用 `cmp`、`xxd` 或 hex-diff 工具。
  • 不做语法感知的 diffdiff 完全是文本级别的。它不理解编程语言语法,在重度重构过的代码里可能错误地配对行。语法感知 diff(部分 IDE 在用)对代码在语义上更准确,但显著更慢。

平台说明

macOS
macOS 终端的等价命令是 `diff -u file1.txt file2.txt`。`opendiff`(来自 Xcode 的 FileMerge)提供带合并支持的文件和目录比较 GUI。
Linux
`diff`、`vimdiff` 和 `meld` 是标准工具。浏览器工具适合直接比较剪贴板里的文本而无需创建临时文件 —— 粘贴即可,diff 即时呈现。
Web
完全在浏览器中运行。文本内容不会发到服务器 —— 适合比较有产权的源码、内部文档、含密钥的配置文件。
广告
广告