Accept Ours戦略を使うべき場面

Accept Ours(HEAD変更の保持)が正しい解決戦略である場面を理解します。git checkout --oursコマンドの等価操作も学びます。

Resolution Strategies

詳細な説明

Accept Ours戦略

「Accept Ours」は、現在のブランチ(HEAD)のバージョンを保持し、そのコンフリクトブロックの取り込み元ブランチの変更を破棄することを意味します。これはコマンドラインでgit checkout --ours <file>を実行するのと同等ですが、ファイル全体ではなく個々のコンフリクトに適用されます。

Accept Oursを使うべき場面

自分のブランチがより新しい、またはより正確なバージョンを持っている場合:

  • 他のブランチにまだ含まれているバグを修正した。
  • 取り込み元の変更に取って代わる値を更新した。
  • 他のブランチの変更が実験的でマージすべきでない。

取り込み元の変更がリバートまたは置換された場合:

  • 他のブランチの機能が放棄された。
  • 自分のブランチに新しい実装がすでに存在する。

設定の分岐が意図的な場合:

  • 環境固有の設定は自分のブランチが定義する通りに残すべき。
  • 自分のブランチが異なるデプロイ環境を対象としている。

コマンドラインでのAccept Ours

ファイル全体の場合:

git checkout --ours path/to/file.txt
git add path/to/file.txt

特定のマージ戦略の場合:

git merge -X ours feature-branch

注意: -X ours(戦略オプション)は-s ours(戦略)とは異なります。-s ours戦略はコンフリクトだけでなく、他のブランチからのすべての変更を破棄します。

Accept Oursのリスク

  • 取り込み元ブランチの正当な変更が失われる可能性があります。
  • 取り込み元ブランチがバグを修正していた場合、その修正が破棄されます。
  • 取り込み元ブランチで作業したチームメンバーは、変更が含まれることを期待している場合があります。

ベストプラクティス

oursを受け入れる前に、取り込み元ブランチが何を達成しようとしていたかを簡単に確認してください。その変更が実際の問題に対処している場合、修正と自分の変更の両方を組み込むためにManual Editを検討してください。

ユースケース

すでにホットフィックスを含む自分のブランチに古いfeatureブランチをマージしています。featureブランチにはまだ古いコードがあるため、影響を受けるすべてのコンフリクトで自分のバージョン(ours)を受け入れます。

試してみる — Git Conflict Resolver

フルツールを開く