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 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Linux その422 - GNOME Boxes の再構築と未来・Flatpak のみの提供やモダンな機能の実装など
    GNOME Boxes の再構築と未来 GNOME Boxes の再構築と未来が以下で紹介されています。
  • Kubuntu その117 - Kubuntu 26.04 LTS にもっと手厚いサポートを・最高の信頼性を誇る KDE 搭載ディストリビューションを目指して
    最高の信頼性を誇る KDE 搭載ディストリビューションを目指して Kubuntu 26.04 LTS に手厚いサポートが導入されました。
  • Linux その421 - GNOME Shell のデザイン構想と長期的な見通し
    GNOME Shell のデザイン構想と長期的な見通し GNOME Shell のデザイン構想と長期的な見通しが、以下で紹介されています。
  • Linux その420 - KDE Plasma で実装予定の新機能や改善・UI レイアウトの調整やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Ubuntu 24.04 その96 - Ubuntu 24.04.5 LTS のリリース日変更
    Ubuntu 24.04.5 LTS のリリース日変更 Ubuntu 24.04.5 LTS のリリース日が変更されました。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
  • Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など
    Windows 向け Coreutils 登場 Windows 向け Coreutils が登場しました。
記事のピックアップ
オプション