Diff 格式化工具

比較文字和程式碼差異,具有格式化高亮和並排檢視

本機執行

原始版本

修改後

Diff 結果

點擊「比較」查看兩側的差異

使用提示

  • 在兩段文字中使用一致的縮排,以獲得更準確的逐行比較。
  • 統一檢視適合小改動。並排檢視適合較大的差異。
  • 新增   刪除   變更
  • 使用交換按鈕反轉比較方向,將新增視為刪除來查看。
  • 在任一輸入框按 Ctrl/Cmd + Enter 即可開始比對。

兩種 Diff 模式,自動選擇

Data Diff 會根據您貼上的內容自動判斷。當兩側都能解析為 JSON 時會切換為結構化 diff;其他情況則逐行比對。您也可以使用結果上方的分頁手動鎖定模式。

JSON 結構化 Diff 會回報哪些內容

  • Added(新增)——僅存在於修改側的鍵或索引,並顯示其值的預覽。
  • Removed(刪除)——僅存在於原始側的鍵或索引。
  • Changed(變更)——同一路徑在兩側的值不同,以之前 → 之後呈現。
  • Type changed(型別變更)——同一路徑在一側是物件,在另一側是純量或陣列。
  • 每個項目都帶有路徑,採用與 JSON、XML 和 YAML Inspector 相同的 $.store.books[0].title 標記法,讓您可以直接跳到原始碼中的對應位置。

需要時的文字 Diff

逐行比對會以行號標示每個新增與刪除的行。適用於程式碼、日誌、設定檔以及任何文字——包括格式變了但資料沒變的 JSON。

範例:JSON 模式看得到、文字模式看不到的差異

下方兩個程式碼片段僅在鍵順序與縮排上不同。文字 diff 會將幾乎每一行都標為已變更;JSON 結構化 diff 則能正確報告零變更。

A
{
  "name": "web",
  "version": "1.0"
}
B
{
  "version": "1.0",
  "name": "web"
}

如何融入您的工作流程

Data Diff 是工作台中的比對步驟。可從其他工具將任何文件傳送到這裡:

常見問題解答

關於 Diff Formatter 格式化的常見問題解答

是的,我們的 Diff 格式化工具完全免費,無需註冊。所有處理都在您的瀏覽器中完成。

您可以比較任何文字內容:程式碼、設定檔、JSON、XML、純文字或任何其他文字格式。

新增的行以綠色背景顯示,刪除的行以紅色背景顯示,變更的行並排顯示兩個版本。

可以。點擊交換按鈕反轉原始和修改後的文字,將新增變為刪除,反之亦然。

工具使用 Myers 差異演算法,這與 Git 用於文字比較的演算法相同,確保準確且最小的差異。

採用 unified diff 格式(-u),也就是 git diff、diff -u 以及所有主流版本控制系統產生的格式——包含一個或多個檔案區段,每個區段都有 ---/+++ 標頭、@@ hunk 標記,以及 +/- 與 context 行。GNU diffutils 文件記載了確切格式;本格式化工具會重新編排 hunk,提供對齊的行號與語法著色。

@@ -3,7 +3,8 @@ 表示:在舊檔案中,從第 3 行開始顯示 7 行;在新檔案中,對應區段從第 3 行開始,共跨越 8 行。從這些數字就能一眼看出變更規模——這裡是新增了一行。格式化工具會完整保留這些標記,因為 patch(1) 和 git apply 都依賴它們。

不行——此工具用於格式化與解說 patch,並不會套用它們。若要套用,請使用 git apply 或 patch -p1;若要合併有衝突的 hunk,請使用您 VCS 的合併工具。格式化功能刻意設計為唯讀,因此您可以放心貼上任何 patch 進行易讀的審閱,包括含有被拒絕或衝突 hunk 的 patch。

{-- * External Resources Component(#19 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / 官方语言文档 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}

相關工具