kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その202 - マージコンフリクトとマージコンフリクトの対応例(git merge)

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

  「マージコンフリクト」と「マージコンフリクト」の対応例です。
  「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.マージ後のブランチの状態

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



Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その74 - Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象
    Qt6 で構築されたアプリがクラッシュする現象 Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象が報告されています。
  • Ubuntu 24.04 その104 - Ubuntu 26.04 LTS へアップグレードするには・アップグレードの注意事項
    Ubuntu 26.04 LTS へアップグレードするには 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Ubuntu 26.04 LTS へアップグレードできます。
  • Ubuntu 26.10 その35 - RISC-V 向け Ubuntu Desktop 登場
    RISC-V 向け Ubuntu Desktop 登場 Ubuntu Desktop 26.10 では、RISC-V 向けデスクトップイメージがリリースされます。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.10 その33 - Ubuntu 26.10 β版がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 β版がリリースされました 2026年10月1日、Ubuntu 26.10 β版 がリリースされました。
  • Ubuntu 26.10 その34 - Ubuntu と Rust に対する取り組み(2026年10月)
    Ubuntu と Rust に対する取り組み 2026年10月1日、Ubuntu と Rust に対する取り組みが以下で紹介されました。
  • Ubuntu 24.04 その103 - Ubuntu 26.04 LTS へアップグレード可能に・2年分の変化が一気にやってくる
    Ubuntu 26.04 LTS へアップグレード可能に 2026年9月29日、Ubuntu 24.04 LTS から Ubuntu 26.04 LTS へアップグレード可能になりました。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Linux その440 - uutils coreutils 0.11.0 でコマンド実行時のエラーメッセージを大幅に改良
    コマンド実行時のエラーメッセージを大幅に改良 uutils coreutils 0.11.0 で、コマンド実行時のエラーメッセージが大幅に改良されました。
  • Ubuntu 26.10 その32 - Snapdragon X2 に対応した Ubuntu 26.10 実験版登場
    Snapdragon X2 に対応した Ubuntu 26.10 実験版登場 2026年9月29日、Snapdragon X2 に対応した Ubuntu 26.10 実験版が登場しました。
記事のピックアップ
オプション