使用するマージストラテジーを指定して、リベースを行う
使用する「マージストラテジー」を指定して、「リベース」を行います。デフォルトでは、「Recursiveマージストラテジー」でリベースが行われまが、ユーザーが特定の「マージストラテジー」を指定することもできます。
「マージストラテジー」の特徴や性質については、以前マージで紹介した「マージストラテジー」を参考にしてください。
指定できるマージストラテジー
指定できる「マージストラテジー」は、以下のとおりです。- Resolve
- Recursive
- Ours
- Subtree
1.Resolve
「Resolveマージストラテジー」を指定できます。この「マージストラテジー」を指定したリベースの例は、「Resolveマージストラテジーを指定して、リベースを行う」を参考にしてください。
Resolveに指定できるオプション
「マージストラテジー」に「Resolve」を指定した場合、「マージストラテジー」のオプションは利用できません。2.Recursive
「Recursiveマージストラテジー」を指定できます。「Recursiveマージストラテジー」は、デフォルトのマージストラテジーです。
使用するマージストラテジーを指定しなかった場合、「Recursiveマージストラテジー」が使用されます。
「Recursiveマージストラテジー」を指定したリベースの例は、「Recursiveマージストラテジーを指定して、リベースを行う」を参考にしてください。
Recursiveに指定できるオプション
「Recursiveマージストラテジー」で利用できるオプションは、以下のとおりです。- ours
- theirs
- patience
- diff-algorithm
- ignore-space-change
- ignore-all-space
- ignore-space-at-eol
- renormalize
- no-renormalize
- rename-threshold
- subtree
1.ours
「マージコンフリクト」に関するオプションです。このオプションを指定すると、衝突した差分(マージコンフリクト)は、常にリベース先の差分が適用されます。
リベース元の差分は破棄されます。
従って、コンフリクトが発生した差分は、リベース元の変更内容の影響を受けません。
コンフリクトが発生しなかった差分は、通常通りマージされます。
これはファイル単位ではなく、差分単位で処理されます。
マージの「ours」オプションとは、逆の意味になるので注意してください。
このオプションの使用例は、「Recursiveマージストラテジーで、リベース先のファイルの差分を優先してリベースする」を参考にしてください。
2.theirs
「マージコンフリクト」に関するオプションです。このオプションを指定すると、衝突した差分(マージコンフリクト)は、常にリベース元の差分が適用されます。
リベース先の差分は破棄されます。
従って、コンフリクトが発生した差分は、リベース先の変更内容の影響を受けません。
コンフリクトが発生しなかった差分は、通常通りマージされます。
これはファイル単位ではなく、差分単位で処理されます。
マージの「theirs」オプションとは、逆の意味になるので注意してください。
このオプションの使用例は、「Recursiveマージストラテジーで、リベース元のファイルの差分を優先してリベースする」を参考にしてください。
3.patience
差分の生成に関するオプションです。ファイルの差分を生成する際、Patience Diffアルゴリズムで差分の生成を行います。
このオプションの使用例は、「Recursiveマージストラテジーで、Patience Diffアルゴリズムを使用してリベースする」を参考にしてください。
4.diff-algorithm
差分の生成に関するオプションです。ファイルの差分を生成する際、指定されたDiffアルゴリズムで差分の生成を行います。
上記の「patience」も指定可能です。
このオプションの使用例は、「Recursiveマージストラテジーで、Diffアルゴリズムを指定してリベースする」を参考にしてください。
5.ignore-space-change
差分生成時の空白文字に関するオプションです。このオプションを指定すると、行末の空白文字を無視します。
また、1文字以上の空白文字は、同じ扱いになります。
このオプションの使用例は、「Recursiveマージストラテジーで、行末の空白文字を無視し、複数の空白文字を同一文字とみなし、リベースする」を参考にしてください。
6.ignore-all-space
差分生成時の空白文字に関するオプションです。このオプションを指定すると、すべての空白文字を無視してファイルの比較を行います。
このオプションの使用例は、「Recursiveマージストラテジーで、すべての空白文字を無視してリベースする」を参考にしてください。
7.ignore-space-at-eol
差分生成時の空白文字に関するオプションです。このオプションを指定すると、行末の空白文字を無視してファイルの比較を行います。
このオプションの使用例は、「Recursiveマージストラテジーで、行末の空白文字を無視してリベースする」を参考にしてください。
8.renormalize
このオプションを指定すると、リベースするファイルを「gitattributes」で定義した属性を適用してから、リベースを行います。適用される属性は、リベース先の「gitattributes」で定義した属性です。
リベース対象の「コミットオブジェクト」に含まれるファイルの改行コードを揃えたい時など、フィルターを実行してからリベースしたい時に利用します。
また「merge.renormalize」の設定よりも優先されます。
このオプションの使用例は、「Recursiveマージストラテジーで、gitattributesで定義した属性を適用してから、リベースする」を参考にしてください。
9.no-renormalize
このオプションを指定すると、リベースするファイルを「gitattributes」で定義した属性を適用せず、リベースを行います。また「merge.renormalize」の設定よりも優先されます。
デフォルトでは、「gitattributes」で定義した属性は適用されません。
このオプションの使用例は、「Recursiveマージストラテジーで、gitattributesで定義した属性を適用せず、リベースする」を参考にしてください。
10.rename-threshold
ファイル名の変更の検出に関するオプションです。リベースする際、ファイル名が変更されたファイルが存在するかどうかを検出します。
この検出は、差分がない箇所(変更されていない箇所)とファイルサイズとの割合で、ファイル名が変更されたかどうかを検出します。
もしあるファイルが、ファイル名が変更されたファイルだと判断された場合は、そのファイルには、ファイル名が変更される前のファイルと、変更された後のファイルの関係が作られます。
この関係は、リベース内容に反映されます。
このオプションの使用例は、「Recursiveマージストラテジーで、ファイル名変更検出のしきい値を指定して、リベースする」を参考にしてください。
11.subtree
「マージストラテジー」の「Subtree」と同様のマージを行います。「マージストラテジー」の「Subtree」では、リベースするファイル群がリベース先の「ワーキングディレクトリー」内のどのサブフォルダー内に配置されているのかを、「Git」が自動的に判断します。
一方、この「subtree」は、ユーザーが配置先のサブフォルダーを指定することができます。
このオプションの使用例は、「Recursiveマージストラテジーで、リベースするファイル群を、リベース先のサブフォルダー内のファイルにリベースする」を参考にしてください。
3.Ours
「Oursマージストラテジー」を指定できます。「Oursマージストラテジー」を指定したリベースの例は、「Oursマージストラテジーを指定して、リベースを行う」を参考にしてください。
Oursに指定できるオプション
「マージストラテジー」に「Ours」を指定した場合、「マージストラテジー」のオプションは利用できません。リベースではほとんど意味がない
「Oursマージストラテジー」では、ファイルの差分は生成されません。そのため、リベース対象となるすべての「コミットオブジェクト」は、変更内容が何もない空のコミットオブジェクトになります。
リベースでは、空のコミットオブジェクトはコミット対象にならないため、リベース先でコミットが行われません。
4.Subtree
リベース実行時、リベース先の「ワーキングディレクトリー」内のサブフォルダー内のファイルを対象にしてリベースを行います。「Subtreeマージストラテジー」を指定したリベースの例は、「Subtreeマージストラテジーを指定して、リベースを行う」を参考にしてください。