Accept Both戦略を使うべき場面

コンフリクトの両側を連結するのが正しい解決である場面を学びます。import文、リスト追加、設定エントリでよく使われます。

Resolution Strategies

詳細な説明

Accept Both戦略

「Accept Both」は両方のバージョンを順番に連結します — 自分のブランチの内容を先に、次に取り込み元ブランチの内容です。これは、両方のブランチがファイルの同じ場所に新しい重複しないコンテンツを追加した場合に理想的な解決法です。

Accept Bothがうまく機能する場面

新しいリスト項目: 両方のブランチが同じリストに項目を追加した場合:

<<<<<<< HEAD
  "lodash": "^4.17.21",
  "luxon": "^3.4.0",
=======
  "lodash": "^4.17.21",
  "moment": "^2.30.0",
>>>>>>> feature/add-dates

Accept Bothで3つのパッケージすべてが含まれます。

import文: 両方のブランチが異なるモジュールをimportした場合、連結が通常正しい解決です。

設定エントリ: 両方のブランチからの新しいルート、メニュー項目、フィーチャーフラグの追加。

CSSルール: 両方のブランチが重複しない異なるCSSクラスやセレクターを追加した場合。

Accept Bothが危険な場面

重複宣言: 両側に重複するコンテンツが含まれている場合、Accept Bothはエラーの原因となる重複を作成します。

順序依存のコード: 文の順序が重要な場合(ミドルウェアの登録、CSSの詳細度など)、盲目的に連結すると不正な動作が生じる可能性があります。

矛盾するロジック: 両方のブランチが同じ変数やreturn文を変更した場合、連結すると同じ変数への2つの代入が生じます。

解決後のクリーンアップ

Accept Both使用後は、必ず:

  1. 両方のバージョンに存在する重複行を削除。
  2. 構文の問題を修正(末尾のカンマ、セミコロンの欠落)。
  3. 連結結果が論理的に意味を成すことを確認。
  4. リンターとテストを実行。

順序の考慮

Accept Bothは「ours」を先に、「theirs」を後に配置します。取り込み元ブランチのコンテンツを先にしたい場合はManual Editで順序を逆転してください。アルファベット順のリストでは、連結後に再ソートが必要な場合もあります。

ユースケース

2人の開発者が同じルーターファイルに異なるAPIルートハンドラーを追加しました。各ハンドラーは独立しているため、両方の追加を受け入れてすべての新しいルートを保持するのが正しいアプローチです。

試してみる — Git Conflict Resolver

フルツールを開く