パッチファイルとバージョン管理のためのUnified Diff形式

Git、パッチファイル、バージョン管理システムで使用されるUnified Diff形式を解説。hunk構文、コンテキスト行、.diffおよび.patchファイルで使用される--- / +++ヘッダー表記を学びます。

Basic Diff

詳細な説明

Unified Diff形式

Unified Diff形式は、git diffdiff -u、パッチファイルの標準出力形式です。追加(+)、削除(-)、変更のないコンテキスト行(スペース)の行プレフィックスで両バージョンを単一のストリームに統合します。

Unified Diffの構造

--- a/config.json
+++ b/config.json
@@ -5,7 +5,8 @@
   "debug": false,
   "port": 3000,
-  "host": "localhost",
+  "host": "0.0.0.0",
+  "cors": true,
   "timeout": 30
 }

ヘッダー行

  • --- a/file — 元のファイルパス
  • +++ b/file — 変更後のファイルパス
  • @@ -5,7 +5,8 @@hunkヘッダー:元のファイルは5行目から7行、変更後は5行目から8行を示す

行プレフィックス

hunk内の各行には正確に1文字のプレフィックスが付きます:

プレフィックス 意味
(スペース) コンテキスト — 参照用の変更のない行
- 削除 — 元から削除された行
+ 追加 — 変更後に追加された行

コンテキスト行

デフォルトでgit diffは各変更の周囲に3行のコンテキストを表示します。コンテキスト行により、ファイル内のどこで変更が発生したかを読者が理解できます。git diff -U<n>でコンテキスト行数を調整できます。

複数のhunk

1つのファイルのDiffに、ファイルの異なる部分で変更が発生した場合、複数のhunkを含めることができます。各hunkには独自の@@ヘッダーがあります。

hunkヘッダーの読み方

hunkヘッダー@@ -10,4 +10,6 @@の意味:

  • 元のファイル: 10行目から4行
  • 変更後: 10行目から6行(2行追加)

ユースケース

Unified Diff形式はGitワークフローに不可欠です。開発者はgit diffの実行、メールでのパッチレビュー、git applyでの変更適用、CI/CDパイプライン出力の確認で遭遇します。バージョン管理、オープンソースプロジェクトへの貢献、マージコンフリクトのトラブルシューティングに携わるすべての人にとって、この形式の理解は重要です。

試してみる — Diff Viewer

フルツールを開く