kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

マージコンフリクトとマージコンフリクトの対応例

  「マージコンフリクト」と「マージコンフリクト」の対応例です。
  「3ウェイマージ」によるマージでは、「マージコンフリクト」が発生する可能性があります。

  「Git」が「3ウェイマージ」を行う際、ファイルの差分からファイルの内容をマージします。
  この時、ファイルの同一行が異なる場合など、「Git」がユーザーの期待するマージ結果を判断できないケースがあります。

  このような状況を「マージコンフリクト」を言います。
  「マージコンフリクト」が発生すると「マージコミット」は行われません。

  ユーザーは、「マージコンフリクト」が発生しているファイルを手動で編集し、コミットを行う必要があります。

1.マージ前の状態

  ここでは例として、「master」ブランチと「fix」ブランチをマージします。

  1-1.ブランチの状態

    現在のブランチ構成を確認すると、以下のようになっています。
    現在のブランチは、「master」ブランチであることが分かります。
    同様に、「HEAD」は「master」ブランチを指していることが分かります。


  1-2.ブランチの状態

    ブランチの状態を図にすると、以下のようになります。


    見ての通り、この状態で「master」ブランチに「fix」ブランチをマージすると、「3ウェイマージ」によるマージになることが分かります。

  1-3.masterブランチのワーキングディレクトリー

    「master」ブランチのワーキングディレクトリーは、以下のようになっています。
    ここでは例として、「master.txt」ファイルに着目します。


    「master.txt」ファイルの中身は、以下のようになっています。


  1-4.fixブランチのワーキングディレクトリー

    「fix」ブランチのワーキングディレクトリーは、以下のようになっています。
    ここでも同様に、「master.txt」ファイルに着目します。


    「master.txt」ファイルの中身は、以下のようになっています。


    「1-3.」の「master.txt」ファイルの中身と比較すると、1行目が異なっています。
    このようなケースでは、「マージコンフリクト」が発生します。

    「master」ブランチの「master.txt」ファイルの1行目の内容と、「fix」ブランチの「master.txt」ファイルの1行目の内容が異なっており、どちらの内容を採用すればいいのか、「Git」は判断できません。

2.マージを行う

  「master」ブランチと「fix」ブランチをマージします。

  2-1.コマンドの実行

    「端末」から、以下のコマンドを実行します。
    コマンドの詳細は、「ファイルのマージを行うコマンドの説明」を参考にしてください。

git merge --verbose fix


  2-2.マージコンフリクトの発生

    マージを行うと、以下のように「マージコンフリクト」のメッセージが表示されます。
    また、「マージコンフリクト」が発生したファイルが表示されます。


  2-3.ワーキングディレクトリーの状態

    「ワーキングディレクトリー」の状態を確認すると、以下のようになります。
    「master.txt」ファイルで「マージコンフリクト」が発生していると表示されます。


3.マージコンフリクトが発生したファイルの修正

  「マージコンフリクト」が発生したファイルを修正します。

  3-1.ファイルを開く

    「マージコンフリクト」が発生したファイルを開きます。
    以下のように、コンフリクトが発生している箇所に、「コンフリクトマーカー」が挿入されます。


    この内容を元に、コンフリクトが発生している行を修正します。
   

  3-2.ファイルの修正

    ファイルの修正を行います。
    ユーザーは、自由に修正することができます。

    ここでは例として、以下のように修正しました。


  3-3.ステージングエリアに追加

    修正したファイルを「ステージングエリア」に追加します。


  3-4.ワーキングディレクトリーの状態

    「ワーキングディレクトリー」の状態を確認すると、以下のようになります。
    「マージコンフリクト」が発生したファイルが存在していないことが分かります。


  3-5.コミットを行う

    「マージコンフリクト」が発生したファイルを全て「ステージングエリア」に追加したら、コミットを行います。


    以上で「マージコンフリクト」の対応は完了です。
 

  3-6.ブランチの状態

    ブランチ構成を確認すると、以下のようになっています。


    「master」ブランチのブランチヘッドが指す「コミットオブジェクト」の識別子は、「3-5.」で生成した「コミットオブジェクト」を指しています。

  3-7.マージ後のブランチの状態

    マージ後のブランチの状態を図にすると、以下のようになります。



関連コンテンツ
同一カテゴリーの記事
コメント
オプション