Ours
2つ以上のブランチをマージする時に使用できる「マージストラテジー」です。「Ours」は、ファイルのマージを行わず、「マージコミット」を行います。
そのため、ファイルの構成や中身は変更されません。
「マージコミット」で生成された「コミットオブジェクト」は、マージしたブランチの「ブランチヘッド」が指す「コミットオブジェクト」を「親コミットオブジェクト」に持ちます。
Oursの利用
上記の通り、「Ours」ではファイルのマージを行わないため、通常のマージとは意味が異なります。例えば、以下のブランチがあるとします。
- ブランチ1(HEAD)
- ブランチ2
ユーザーは、「ブランチ2」で行った変更を、手動で「ブランチ1」に取り込んだとします。
マージするブランチの変更内容をすでに手動で取り込んでいる場合、ブランチのマージを行う必要がありません。
ですのでユーザーは、「ブランチ1」と「ブランチ2」をわざわざマージしたいとは思わないでしょう。
しかし「コミットオブジェクト」の履歴には、マージしたブランチの情報は含まれていないため、「ブランチ2」との関係は履歴上存在しません。
マージしたブランチの情報は、「マージコミット」で生成した「コミットオブジェクト」に含まれるためです。
「Ours」は、すでに別のブランチで行った変更内容を取り込んでいるが、履歴上、そのブランチとの関係を結び付けたい時に使用します。
「ブランチ1」と「ブランチ2」を「Ours」でマージすれば、「マージコミット」により「ブランチ1」と「ブランチ2」の関係を履歴上結びつけることができます。
「ブランチ1」と「ブランチ2」を「Recursive」でマージした際、同様の結果になる場合でも、ファイルのマージが不必要なことが明らかならば、ファイルのマージを飛ばすことでマージにかかる時間を節約できます。
ブランチの結びつけ
上記の例は一例ですが、要は、ブランチとブランチの結び付きを履歴に残したい時に使用します。ですので、マージするブランチの変更内容を取り込む必要がなく、変更内容を取り込んではいないが、履歴上他のブランチとの結び付けを行いたい時にも利用できます。