マージコンフリクトの状況を表示する
「git status」コマンドは、「マージコンフリクト」発生時に実行すると、「マージコンフリクト」の状況を表示します。どのファイルで「マージコンフリクト」が発生しているのか、どのような「マージコンフリクト」が発生しているのか、確認することができます。
マージコンフリクトの発生と状況の確認
ここでは例として、「マージコンフリクト」を発生させ、「マージコンフリクト」の状況を確認します。1.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。現在のブランチは、「master」ブランチであることが分かります。
同様に、「HEAD」は「master」ブランチを指していることが分かります。
ここでは例として、「master」ブランチに「fix」ブランチをマージします。
2.ブランチの状態
ブランチの状態を図にすると、以下のようになります。3.マージを行う
以下のように「master」ブランチに「fix」ブランチをマージすると、「マージコンフリクト」が発生します。「マージコンフリクト」は、「common.txt」ファイルで発生したと出力されています。
4.ワーキングディレクトリーの確認
「ワーキングディレクトリー」を確認すると、以下のようになっています。「common.txt」ファイルは、「マージコンフリクト」が発生したファイルです。
「fix.txt」ファイルは、「fix」ブランチにのみ存在していたファイルです。
「master.txt」ファイルは、「master」ブランチにのみ存在しているファイルです。
5.common.txtファイルの中身
「マージコンフリクト」が発生した「common.txt」ファイルの中身を見てみると、以下のようになっています。コンフリクトが発生したか箇所に、「コンフリクトマーカー」が挿入されています。
6.マージコンフリクトの状態
「ワーキングディレクトリー」の状態を確認し、「マージコンフリクト」の状態を確認します。「端末」から、以下のコマンドを実行します。
コマンドの詳細は、「ワーキングディレクトリーにあるファイルの状態を表示するコマンドの説明」を参考にしてください。
git status
上記から、「fix.txt」ファイルは新規に追加されるファイルであることが分かります。
「common.txt」ファイルは、「マージコンフリクト」が発生したファイルであることが分かります。
ファイルの状態の見方
「git status」コマンドで表示されるファイルの状態の見方です。ファイルの状態により、以下の4つのカテゴリーに分けて表示されます。
- Changes to be committed
- Changes not staged for commit
- Untracked files
- Unmerged paths
「1.」〜「3.」は、リンク先を参考にしてください。
4.Unmerged paths
「マージコンフリクト」が発生しているファイルの一覧が表示されます。「マージコンフリクト」の内容により、以下のカテゴリーに分かれます。
4-1.both modified
「マージベース」にあるファイルと、マージされるブランチ(HEAD)にあるファイルと、マージするブランチにあるファイルを「3ウェイマージ」した結果、変更箇所がコンフリクトしているファイルです。「両方変更されている」の「両方」とは、マージされるブランチとマージするブランチのことを指します。
ユーザーは、コンフリクトしている箇所を編集し、コンフリクトの解消を行います。
4-2.both added
マージされるブランチ(HEAD)にあるファイルと、マージするブランチにあるファイルをマージした結果、変更箇所がコンフリクトしているファイルです。「4-1.」と異なり、 「マージベース」に同じファイルが存在しないケースです。
ユーザーは、コンフリクトしている箇所を編集し、コンフリクトの解消を行います。
4-3.deleted by them
「マージベース」とマージされるブランチ(HEAD)に存在するファイルが、マージするブランチからは削除されているファイルです。ユーザーは、このファイルを削除するか、それとも削除せずファイルを残すか、判断します。
4-4.deleted by us
「マージベース」とマージするブランチに存在するファイルが、マージされるブランチ(HEAD)では削除されているファイルです。ユーザーは、このファイルを削除するか、それとも削除せずファイルを残すか、判断します。
4-5.added by us
マージされるブランチ(HEAD)にのみ存在するファイルです。「git merge」コマンドでマージする場合、このファイルは影響を受けません。
4-6.added by them
マージするブランチにのみ存在するファイルです。「git merge」コマンドでマージする場合、このファイルは自動的に「ステージングエリア」に追加されます。
4-7.both deleted
マージされるブランチ(HEAD)及び、マージするブランチから削除されたファイルです。「git merge」コマンドでマージする場合、このファイルは自動的に削除されます。