Octopusマージストラテジーでマージを中止する
「Octopusマージストラテジー」で「マージコンフリクト」が発生すると、マージに失敗します。マージに失敗した場合、マージを中止し、マージ前の状態に戻す必要があります。
ここでは、マージの中止方法を紹介します。
マージコンフリクトが発生する状況
まず、「マージコンフリクト」が発生する状況を見てみます。1.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。現在のブランチは、「master」ブランチであることが分かります。
同様に、「HEAD」は「master」ブランチを指していることが分かります。
ここでは例として、「master」ブランチに「fix」ブランチと「new」ブランチをマージします。
2.ブランチの状態
ブランチの状態を図にすると、以下のようになります。ここでは、「マージコンフリクト」が発生する「common.txt」ファイルに着目します。
3.common.txtファイルの中身
各ブランチの「common.txt」ファイルの中身は、以下のようになっています。masterブランチ
fixブランチ
newブランチ
4.マージを行う
「Octopusマージストラテジー」でマージします。コマンドの詳細は、「ファイルのマージを行うコマンドの説明」を参考にしてください。
git merge --verbose --strategy=octopus fix new
5.マージコンフリクトの発生
以下のように、「common.txt」ファイルで「マージコンフリクト」が発生します。6.ワーキングディレクトリーの状態
「ワーキングディレクトリー」の状態を確認すると、「common.txt」がマージされていない状態になっています。7.common.txtファイルの中身
「マージコンフリクト」が発生した「common.txt」ファイルの中身を見ると、以下のようにコンフリクトが発生した箇所に、「コンフリクトマーカー」が挿入されています。「コンフリクトマーカー」には、ブランチ名が出力されておらず、どのファイルの変更箇所が衝突しているのか、わかりづらい状態です。
また、中途半端にマージされている状態なので、マージを中止する必要があります。
上記の例では、「new」ブランチがマージされていない状態です。
また、この状態でコミットを行っても、「マージコミット」になりません。
マージを中止する
マージを中止して、マージ前の状態に戻します。1.マージの中止
「端末」から、以下のコマンドを実行します。
git reset --hard HEAD