関数本体内のコンフリクト解決

2つのブランチがロジック、変数、戻り値を異なる方法で変更した関数実装内のマージコンフリクトを処理します。

Multi-Conflict Files

詳細な説明

関数本体のコンフリクト

2つのブランチが同じ関数の実装を変更した場合、結果のコンフリクトは慎重な分析が必要です。単純な値の変更とは異なり、関数本体のコンフリクトにはロジックフロー、変数の依存関係、副作用が含まれ、すべてが連携して動作する必要があります。

典型的なシナリオ

function calculateTotal(items) {
<<<<<<< HEAD
  const subtotal = items.reduce((sum, item) => sum + item.price * item.qty, 0);
  const tax = subtotal * 0.08;
  const shipping = subtotal > 100 ? 0 : 9.99;
  return { subtotal, tax, shipping, total: subtotal + tax + shipping };
=======
  const subtotal = items.reduce((sum, item) => sum + item.price * item.quantity, 0);
  const discount = applyPromoCode(subtotal);
  const tax = (subtotal - discount) * 0.08;
  return { subtotal, discount, tax, total: subtotal - discount + tax };
>>>>>>> feature/promo-codes

分析プロセス

解決を選択する前に、各ブランチの変更内容をマッピングします:

側面 HEAD (ours) 取り込み元 (theirs)
プロパティ名 item.qty item.quantity
送料ロジック 100ドル以上で送料無料を追加 なし
プロモコード なし 割引計算を追加
税の計算ベース 小計全体 割引後の小計

Manual Editが通常必要な理由

関数本体のコンフリクトがAccept Ours、Accept Theirs、Accept Bothで解決できることはめったにありません。両方のバージョンを連結すると変数宣言の重複と2つのreturn文が作成されます。代わりに、両方のブランチの意図を理解し、送料ロジックとプロモコード割引の両方を含む統一実装を作成する必要があります。

解決後のテスト

解決後は必ず関数のユニットテストを実行してください。テストが存在しない場合は追加しましょう — 2つのブランチが同時に変更した関数は、テストカバレッジを持つに値するほど重要な関数です。

ユースケース

2つのfeatureブランチが独立して同じ価格計算関数を強化しました — 1つは送料無料ロジックを追加し、もう1つはプロモーション割引サポートを追加しました。マージにより関数本体にコンフリクトが発生します。

試してみる — Git Conflict Resolver

フルツールを開く