JSONファイルのコンフリクト解決
JSON設定ファイル(tsconfig、eslintrc、settings)のマージコンフリクトを修正します。末尾のカンマ、ネストされたオブジェクト、配列のマージを処理します。
Common Patterns
詳細な説明
JSONファイルのコンフリクト
JSONファイルは設定(tsconfig.json、.eslintrc.json)、パッケージ管理(package.json)、データストレージに使用されるため、マージコンフリクトの頻繁な発生源です。JSONの厳密な構文 — 末尾のカンマなし、コメントなし — により、小さなミスでも無効なJSONが生成されるため、コンフリクトは特に問題になります。
よくあるJSONコンフリクトの種類
トップレベルのプロパティ追加: 両方のブランチが同じJSONオブジェクトに新しいキーを追加。
{
<<<<<<< HEAD
"compilerOptions": { "strict": true },
"include": ["src/**/*"],
"exclude": ["node_modules"]
=======
"compilerOptions": { "strict": true, "esModuleInterop": true },
"include": ["src/**/*", "tests/**/*"]
>>>>>>> feature/test-setup
}
配列要素のコンフリクト: 両方のブランチが同じ配列にアイテムを追加。
ネストされたオブジェクトのコンフリクト: 両方のブランチが深くネストされたオブジェクト内の異なるプロパティを変更するが、Gitはブロック全体をコンフリクトとして認識。
解決のベストプラクティス
- 両側を頭の中で解析: 各ブランチが意図した完全なJSON構造を理解します。
- Manual Editを使用: JSONコンフリクトは有効な構文を保証するために、ほぼ必ず手動解決が必要です。
- カンマに注意: 解決後の最も一般的なエラーは、カンマの不足または余分なカンマです。
- 結果を検証: 解決したJSONをJSONフォーマッターに貼り付けて、保存前に構文を確認してください。
フォーマットの一貫性
解決後、プロジェクトのフォーマッター(Prettierなど)を実行してインデントと末尾のカンマを正規化してください。これにより、次にファイルを編集する人が不要なdiffノイズを作成することを防ぎます。
ユースケース
2つのブランチがtsconfig.jsonを変更しました — 1つはTypeScriptの厳密オプションを追加し、もう1つはテストファイルのパスを設定しました。Gitは重複するJSON構造の変更をマージできません。