Unified Diff形式のファイルヘッダー

Unified Diffの---と+++ファイルヘッダー、diffコマンドライン、indexラインについて学びます。各部分の意味と必要な場合を解説します。

Unified Diff Format

詳細な説明

Unified Diffのファイルヘッダー

完全なUnified Diffは、比較対象のファイルを識別するヘッダー行で始まります。Diffパッチ適用ツールではこれらのヘッダーは必須ではありませんが、GitやOthersツールからのパッチを扱う際に理解しておくと役立ちます。

完全なヘッダー構造

diff --git a/src/utils.js b/src/utils.js
index 3a4b5c6..7d8e9f0 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -1,5 +1,7 @@

ヘッダーの構成要素

目的
diff --git a/... b/... diffコマンドとファイルの識別(Git固有)
index 3a4b5c6..7d8e9f0 100644 Gitのblobハッシュとファイルモード
--- a/src/utils.js オリジナル(旧)ファイルのパス
+++ b/src/utils.js 変更後(新)ファイルのパス

特殊なファイル名

  • /dev/null — ファイルが作成された(--- /dev/null)または削除された(+++ /dev/null)ことを示す
  • a/b/プレフィックスは旧バージョンと新バージョンのGit規約

最小限の必要フォーマット

Diffパッチ適用ツールでは、Hunkヘッダー(@@)とDiff行のみが必要です:

@@ -1,3 +1,4 @@
 line 1
 line 2
+new line
 line 3

---+++diff行はオプションですが、明確さのために推奨されます。

ユースケース

複数のファイルのDiffを含むGitプルリクエストからパッチを抽出しています。ファイルヘッダーを理解することで、特定のファイルの変更を分離して個別に適用できます。

試してみる — Diff Patch Applier

フルツールを開く