1. ホーム
  2. git

[解決済み] Git リポジトリでのマージの衝突を解決するには?

2022-03-17 10:32:34

質問

のマージコンフリクトを解消したい。 Git リポジトリ

どうすればいいのでしょうか?

どのように解決するのですか?

試してみてください。 git mergetool

GUIを開いて、それぞれのコンフリクトを順を追って説明し、どのようにマージするかを選択することができます。 時々、その後に少し手作業で編集する必要がありますが、通常はそれだけで十分です。 全部を手作業でやるよりはずっといいのは確かです。

による ジョシュ・グローバー氏のコメント :

コマンド

は、GUIをインストールしない限り、必ずしもGUIを開くとは限りません。実行 git mergetool 私の場合、結果は vimdiff が使用されています。をインストールすることができます。 のいずれかを使用してください。 meld , opendiff , kdiff3 , tkdiff , xxdiff , tortoisemerge , gvimdiff , diffuse , ecmerge , p4merge , araxis , vimdiff , emerge .

以下は、使用するプロシージャの例です。 vimdiff を使用して、マージの競合を解決します。ベースとなるのは このリンク

ステップ1 : ターミナルで以下のコマンドを実行します。

git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false

これは、vimdiffをデフォルトのマージツールとして設定します。

ステップ2 : ターミナルで次のコマンドを実行します。

git mergetool

ステップ3 : 以下の形式でvimdiffが表示されます。

  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝

これら4つのビューは

LOCAL - これは現在のブランチのファイルです。

<ブロッククオート

BASE - 共通の祖先、両方の変更前のファイルの様子です。

<ブロッククオート

REMOTE - 自分のブランチにマージするファイルです。

<ブロッククオート

MERGED - マージ結果、これはレポに保存されるものです。

これらのビューの間を移動するには ctrl + w . MERGED ビューに直接アクセスするには、次のようにします。 ctrl + w に続いて j .

vimdiffのナビゲーションについての詳しい情報は こちら こちら .

ステップ4 . MERGEDビューを次のように編集することができます。

REMOTEから変更を取得する場合

:diffg RE

BASEから変更点を取得する場合

:diffg BA

LOCALから変更を取得する場合

:diffg LO

ステップ5 . 保存、終了、コミット、クリーンアップ

:wqa viの保存と終了

git commit -m "message"

git clean diffツールで作成された余分なファイル(例:*.orig)を削除します。