兩份文字差在哪?用差異比對檢查文稿與設定檔的修改
把原始文字貼在左邊、修改後的文字貼在右邊,按「比對差異」,就會標出新增、刪除與修改的行,還能一處一處往下檢查。這篇用一份虛構的活動通知示範,說明忽略空白、大小寫與空行的效果、行內標示用字詞還是字元,以及怎麼讀懂並匯出 unified diff。
什麼時候用差異比對
只要你手上有「改之前」和「改之後」兩份文字,又不想用眼睛一行一行對,就適合用差異比對:文稿或公告的修訂版、設定檔改了哪幾個值、兩份清單的差異、程式碼的修改。工具只負責把變動標出來,改得對不對、能不能接受,還是要你自己判斷,重要的文件(例如合約)請以原文與專業人員的審閱為準。
步驟
- 打開 文字差異比對工具,把原始文字貼到左欄、修改後的文字貼到右欄;也可以按各欄的「開啟檔案」載入(單檔上限 20 MB,編碼會辨識 UTF-8 含 BOM、UTF-16,其餘會試 Big5)。想先看看效果,按「載入範例」。
- 設定比對選項(見下一節),按「比對差異」。內容不多時,之後修改文字或選項,結果會自動更新。
- 結果區頂端會顯示「新增幾行、刪除幾行、修改幾行」與左右各有幾行,旁邊顯示「共幾處」差異。連在一起的一整塊變動算一處。
- 選「並排」或「合併」檢視。「顯示」可以選只看差異附近(前後 3 行或 10 行),或全部內容。窄螢幕(寬度小於 760 px)預設用合併檢視。
- 用「↑ 上一個」「↓ 下一個」一處一處檢查,旁邊會顯示「第 1/3 處」。
- 需要留存或傳給別人:按「複製 unified diff」、「↓ 下載 .diff」、「↓ 下載 .patch」或「↓ 下載 HTML 報告」。
實測:一份通知的兩個版本
我們寫了一份虛構的「社團活動通知」,原始版有 7 行,修改版有 8 行。修改的內容是:日期從 10 月 12 日改成 19 日、地點從三樓改成二樓、費用從 100 元改成 120 元(含保險)、請攜帶的物品多了雨具,另外新增一行聯絡人。比對的結果是:

| 項目 | 數值 |
|---|---|
| 新增 | 1 行 |
| 刪除 | 0 行 |
| 修改 | 4 行 |
| 左右行數 | 左 7 行/右 8 行 |
| 差異處數 | 3 處 |
為什麼 5 行變動只算 3 處?因為連在一起的變動算一處:日期與地點是相鄰的兩行(1 處),費用與請攜帶是相鄰的兩行(1 處),最後新增的聯絡人是另一處(1 處)。換成「合併」檢視,就會把刪除與新增的行上下排在一起:

怎麼讀 unified diff
按「↓ 下載 .diff」(或 .patch,兩者內容相同),得到的是 435 位元組的文字檔:
--- a/original.txt
+++ b/modified.txt
@@ -1,7 +1,8 @@
社團活動通知
-日期:10 月 12 日(星期六)
-地點:三樓活動教室
+日期:10 月 19 日(星期六)
+地點:二樓活動教室
集合時間:上午 9 點
-費用:每人 100 元
-請攜帶:水壺、帽子
+費用:每人 120 元(含保險)
+請攜帶:水壺、帽子、雨具
報名截止:10 月 8 日
+聯絡人:王小明(示範)- 開頭的
---與+++是兩份檔案的名稱(原始與修改後)。 @@ -1,7 +1,8 @@表示:原始版從第 1 行起看 7 行,修改版從第 1 行起看 8 行。- 減號開頭的行是被刪除或改掉的舊內容,加號開頭的是新內容,前面是空白的行是沒改變、用來標示位置的上下文。
- HTML 報告(「↓ 下載 HTML 報告」)是單一個檔案,可以用瀏覽器直接開啟或列印,給不熟 diff 格式的人看最方便。
選項怎麼用(實測)
三個「忽略」選項預設都沒勾選,每一項都是用一個最小的例子測的:
| 選項 | 測試的兩段文字 | 沒勾選 | 勾選後 |
|---|---|---|---|
| 忽略空白 | 「費用:每人 100 元」與「費用:每人 100 元」(多了空格) | 1 處差異 | 沒有差異 |
| 忽略大小寫 | 「Room A, Building 2」與「room a, building 2」 | 1 處差異 | 沒有差異 |
| 忽略空行 | 「第一段/第二段」與中間多了一個空行的版本 | 1 處差異(新增 1 行) | 沒有差異 |
勾選忽略選項後,被忽略的差異不會產生區塊,但下載的 unified diff 仍然以原文輸出,套用 patch 之前請再確認一次。
行內標示:字詞、字元、不標示
同一行的變動,行內可以標得很粗或很細。以「費用:每人 100 元」改成「費用:每人 120 元(含保險)」為例:選「字詞」會把整個「100」與「120」標起來;選「字元」只標出真正不同的那個字(0 與 2);選「不標示」就只標整行。「中文以字元為單位比對」預設勾選,因為中文字之間沒有空格,要用字元才能切得開。

顯示範圍
文字很長、只改了一兩處時,用「只看差異附近」最省事。我們用 40 行的文字、只改第 20 行測試:選前後 3 行,畫面只顯示差異附近的幾行;選前後 10 行會多顯示一些上下文;選「全部內容」才會列出全部 40 行。
大檔也能比對嗎?(實測)
工具頁標示「2 萬行大檔也能比對」。我們產生了 20,000 行(約 63 萬字)的文字,在其中每 100 行改一行,共 200 行不同,比對的結果是「200 處差異」,耗時 191 毫秒(在這台測試電腦上,不同裝置會有差異)。單一檔案的上限是 20 MB。
使用上的注意事項
- 看到「沒有差異」時,先檢查是不是勾了忽略空白、大小寫或空行。
- 檔案開啟後文字變成亂碼,多半是編碼的問題。可以先在編輯器裡另存成 UTF-8 再載入。
- 工具比對的是純文字。要比對 Word 或 PDF 的內容,請先把文字複製出來貼上。
- 套用 patch 前先備份原始檔:unified diff 是標準格式,一般的 patch 或 git apply 都能讀,但我們沒有在本站實測套用。
常見問題
我貼的文字會被上傳或保存嗎?
不會。比對全程在你的瀏覽器裡進行,文字與檔案都不會上傳,也不會被保存,工具只會記住你選的比對選項。
為什麼明明有改,卻顯示沒有差異?
最可能的原因是勾了忽略空白、忽略大小寫或忽略空行,而你改的剛好是這幾類。把這些選項取消再比一次。
並排和合併要選哪一個?
寬螢幕用並排最直觀,左右兩邊對照著看;窄螢幕或手機用合併檢視比較好讀,工具在寬度小於 760 px 時預設用合併。
.diff 和 .patch 有什麼不同?
本工具下載的兩者內容相同,只是副檔名不同,.patch 方便丟給 patch 或 git apply 使用。
可以比對多大的檔案?
單一檔案上限是 20 MB。我們實測 20,000 行、約 63 萬字的文字只要 191 毫秒,但這會因裝置而異。
相關工具:文字差異比對 — 逐行、逐字比較兩份文字或程式碼,匯出 unified diff 與 HTML 報告。
開啟文字差異比對