常见问题
"修改"和"删除+新增"有什么区别?为什么我改了一行却显示黄色?
工具逐行比较时,若某个位置旧行被新行替换,算法会把相邻的"删除旧行+新增新行"合并为一条"修改"(黄色);只有纯粹被删掉的行标红,只有纯粹新加入的行标绿。最长公共子序列(LCS)算法会尽量把两侧相同行对齐,所以单行改动通常显示为一条黄色"修改",而不是多条红绿行。查看差异时,黄行说明"这里的内容变了",红绿行说明"这里增删了什么"。
为什么连续相同的行被折叠成"▼ 折叠了 N 行"?展开或复制会丢失吗?
为了减少长文件的滚动量,当连续未变更的行超过 6 行时,工具会把中间部分折叠成一条"折叠了 N 行"的提示,点击它即可展开查看完整内容。折叠只影响页面显示,不影响复制结果——点击"复制结果"输出的始终是包含全部行的完整差异文本,不会因为折叠而丢失任何行。
复制出来的结果是什么格式?能直接当补丁(patch)用吗?
复制结果采用类 unified diff 的纯文本格式:未变更行前加两个空格,新增行以 + 开头,删除行以 - 开头,修改行会同时输出 -旧行 和 +新行 两行。它适合粘贴到代码评审评论、邮件或文档里人工阅读,但缺少 @@ 区块头、文件路径和行号信息,不能直接用 git apply 或 patch 命令应用,只适合作为给人看的差异摘要。
为什么有些明明相同的行被当成不同?换行符会影响结果吗?
会的。工具按行分割文本,行尾的 \r(Windows 的 CRLF 换行符)如果保留,会被算作行内容的一部分,导致两侧看起来相同的行被判为不同。当一边是 Windows 换行、另一边是 Unix 换行时,差异会异常增多。遇到这种情况,先在编辑器里把两边统一成同一种换行符(LF 或 CRLF)再对比。另外空行也会作为一行参与比较,粘贴时注意首尾多余空行。
大文件对比会卡吗?什么样的内容适合用这个工具?
LCS 算法的时间复杂度约为 O(m×n),m、n 是两侧的行数。几百行到几千行的代码、配置、日志对比在浏览器里基本无感;几万行以上的文本计算和渲染耗时会明显增加,极端情况可能卡顿,建议先缩小对比范围。工具只处理纯文本,图片、压缩包等二进制内容无法正确比较,会输出整块乱码式的"新增/删除";这类文件请先导出为 CSV、TXT 等文本格式再对比。