Git リポジトリのマージ競合を解決するにはどうすればいいですか? 質問する

Git リポジトリのマージ競合を解決するにはどうすればいいですか? 質問する

Git リポジトリ内のマージ競合を解決するにはどうすればよいですか?

ベストアンサー1

試す:

git mergetool

各競合を順に説明する GUI が開き、マージ方法を選択できます。後で手動で編集する必要がある場合もありますが、通常はそれだけで十分です。すべてを手動で行うよりははるかに優れています。


に従ってジョシュ・グローバーのコメント:

[このコマンド]は、インストールしない限り必ずしも GUI を開くわけではありません。git mergetoolの場合、 を実行すると が使用されまし代わり使用するにはvimdiff次のいずれかのツールをインストールできます: meld、、、、、、、、、、、、、、、opendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmergep4mergearaxisvimdiffemerge


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 ビューに直接アクセスできますctrlwj

    vimdiffナビゲーションに関する詳細はここそしてここ

  4. MERGED ビューは次のように編集できます。

    • REMOTEから変更を取得したい場合

      :diffg RE
      
    • BASEから変更を取得したい場合

      :diffg BA
      
    • LOCALから変更を取得したい場合

      :diffg LO
      
  5. 保存、終了、コミット、クリーンアップ

    :wqa保存してviを終了する

    git commit -m "message"

    git clean余分なファイルを削除します (例*.orig)。警告:引数を渡さない場合は、追跡されていないファイルがすべて削除されます。

おすすめ記事