项目跑久了,总会出现「明明昨天还好好的」:配置被人改过、两台机器上的 .env 不一致、自动生成的代码和上次不一样、发布前后的日志对不上。肉眼一行行比既慢又容易看漏,用 diff 工具可以直接告诉你:哪些行没变,哪些是新增、删除或修改。
这个文件对比工具只做一件事:把两段纯文本对齐,把不同的地方标出来,让你逐处检查。它不会帮你合并,也不会猜你的意图。不用上传,不用注册,也不需要后端。
对比不同版本或不同服务器上的 .env、nginx.conf、docker-compose.yml 或 Kubernetes 清单,马上找到被改动的那一行。
对比 staging 和 production 的环境变量或开关配置,在出事故之前发现漏配的 key 或被改反的布尔值。
提交之前,对比 OpenAPI 客户端、Protobuf 代码、迁移 SQL 等生成结果,只看真正发生变化的部分。
把两份日志、CSV 导出或 NDJSON 片段放在一起,新增和消失的行一眼就能看出来,方便排查回归问题和数据缺失。
该编辑器接受文本(非二进制文件),并提供三种途径,最终都在同一个同步视图中结束。请选择最符合你当前内容位置的方法。
| 方法 | 何时使用 | 会发生什么 |
|---|---|---|
| 粘贴 | 剪贴板里已经有一段片段,例如 PR 里的代码块、日志摘要,或通过 SSH 复制的配置。 | 在需要的一侧点击粘贴,或者按 Ctrl+V / Cmd+V。该侧的编辑器会被剪贴板的文本替换,差异会立即重新计算。 |
| 上传 | 内容保存在磁盘上,例如 .txt、.json、.yml、.xml 或任意基于文本的源文件。 | 将文件拖入拖放区,或点击它以打开文件选择器。每侧只能接受一个文件。例如 .pdf、.png、.zip 或 .exe 这样的二进制文件会被拒绝,并弹出提示消息。大于 10MB 的文件将作为文件引用附加,采用分块流式读取的方式,而不是一次性全部读入内存。 |
| 工具移交 | 你刚刚在不同标签页中解码了两个 Base64 载荷,想知道它们有什么不同,或者格式化工具的输出已准备好进行比较。 | 在 Base64 页面上,每次解码都会打开一个编号标签页。将鼠标悬停在任意标签页上,点击 ⇄ 比对 图标,两个解码后的文本会以左和右的形式出现在这里,标签页名称作为文件名显示。同样的移交方式也适用于 JSON 比对:导航到此页面,内容会自动加载。 |
比对结果是一个同步的并排视图:两个面板同步滚动,使一侧的每处变更都与另一侧对应的内容水平对齐。以下带注释的示意图展示了真实的界面布局:
+、− 或 ~ 分别代表添加、删除或更改。+ 标记。在示例中,PORT=8080 仅在右侧出现,因为左侧缺少这一行。− 标记和删除线。在生产环境中 PORT=3000 被删除了,你可以确切地看到位置。~ 标记,不同的部分会被内联高亮。TIMEOUT=30 → TIMEOUT=60 是一次编辑操作,而不是一次添加和一次删除。超过 10MB 的文件不适合作为 React 字符串属性来保存。无论是从粘贴还是放置的 File 对象输入,只要一侧超出此阈值,编辑器即切换为流式路径。
检测到大文件。为了保持性能已启用优化的只读模式。历史记录(撤销/重做)和代码折叠功能已禁用。正在按块加载并显示数据。
readOnly 与 domReadOnly 均为 true10 MB 的阈值针对每一侧单独计算。低于该大小时,如果您刷新标签页,内容会自动保留。超过该大小时,文件会直接流式传输到查看器而不会被存储,因此刷新后将重新开始。清空两侧会让编辑器恢复到完整的交互模式。
本页面的所有操作均在您的浏览器中运行。没有文件上传,没有服务器端处理,也没有超出当前比对所需范围的存储。
这也意味着限制是本地的,不受配额限制:
文本永远不会离开设备。关闭标签页内容即消失;刷新页面存储将为空。
在台式机上处理数十兆字节很轻松。实际的上限是标签页的可用内存。超大的单行文件是最难渲染的。
文件从您的设备本地读取。仅当您主动通过 URL 导入内容时,才会使用网络。
初次进行文件比对的用户经常会对这些情况感到意外。这都是正常行为,并非 bug,且都有简单的解决办法。
ignoreTrimWhitespace 设置为 false,因此差异工具会将缩进和尾随空格视为有意义的变更。对于纯文本,空格也是数据。如果觉得烦人,请点击修剪 (Trim) 按钮:它会修剪每行、删除空白行,并将连续的多个空格折叠为一个。CRLF (\r\n) 结束,而 macOS/Linux 以及大多数 git 检出使用 LF (\n)。修剪功能也可以处理这个问题:它将末尾的 \r 去除,将换行符标准化为 LF。▾不会。粘贴、拖入、从 URL 导入以及对比计算,全部在你的浏览器里完成,没有数据发送到服务器。关闭页面后内容就清空了。
任何文本文件都行,比如 .txt、.env、.json、.yml、各种源代码。PDF、图片这类二进制文件会在读取前被拦下。
会改动编辑器里的内容。它按行去掉首尾空白、删除空行,并把连续多个空格合并成一个。如果你的空行是有意保留的,用之前请注意。原始文件不会被修改。
没有硬性上限,但超过 10MB 会进入只读模式,实际能处理的大小取决于浏览器标签页的内存。
文件差异看完后,如果内容是 JSON,可以先用 JSON 格式化工具校验,再用 JSON 对比忽略空白差异;要比较整个目录,请使用文件夹对比;遇到编码过的内容,用 Base64 解码。
把两个文本文件粘贴或拖进来,左右并排对比,每一行是新增、删除还是修改都标得清清楚楚,单个文件最大支持 30MB。全程在浏览器本地运行,不上传任何数据。