文字比对
逐行比对两段文字,清楚看出新增与删除的内容,可忽略大小写或空白,也可只显示有差异的行。全部在浏览器中执行。
在你的浏览器中运行
结果怎么看
两边的行会先用 git diff 所使用的同一套演算法对齐,再以单栏显示:删除的行标 -,新增的行标
+,没有变动的行不标记。左侧两个数字分别是原始版本与修改后版本的行号——这正是告诉你「左边第
40 行就是右边第 37 行」的依据。
被修改过的行会显示成先删除、再新增。逐行比对没有「修改」这个概念:一行要嘛相同,要嘛不同。
忽略空白
当画面上满是看起来一模一样却被标为差异的行时,就该打开这个选项。常见原因有:
- 换行字元。 在 Windows 编辑过的文件是
\r\n,同一个文件在 Unix 上是\n。每一行都不同, 但画面上看不出任何差别。 - 重新排版。 跑过一次格式化工具,或把 Tab 换成空格,整份文件每一行都变了,实际行为却没变。
- 行尾多余的空白,而多数编辑器默认不会显示它。
开启后,比对会在去除首尾空白、把连续空白视为一个之后才进行,画面上显示的仍是你贴上的原文。
演算法为什么重要
单纯从第一行开始一对一比较很容易,但没有用:在最前面插入一行,后面每一行都会被判定为不同。改成 寻找最长共同子序列——也就是在两边都出现、顺序也相同的最大集合——就只会回报那一行新增,其余保持 不变。
本页采用 Myers 演算法,成本取决于两段文字有多「不同」,而不是有多长,所以两份几乎相同的千行文件 可以瞬间比对完成。如果两段文字几乎毫无共通之处,就不存在有意义的对齐方式,结果会以整段替换呈现。
你的数据只留在这里
两段文字都在你的浏览器中比对,不会上传。在贴上两个版本的合约、设定档,或任何你不会交给陌生 服务器的内容之前,这点值得先知道。