Git リポジトリ内のマージ競合を解決するにはどうすればよいですか?
ベストアンサー1
試す:
git mergetool
各競合を順に説明する GUI が開き、マージ方法を選択できます。後で手動で編集する必要がある場合もありますが、通常はそれだけで十分です。すべてを手動で行うよりははるかに優れています。
に従ってジョシュ・グローバーのコメント:
[このコマンド]は、インストールしない限り、必ずしも GUI を開くわけではありません。私
git mergetool
の場合、 を実行すると が使用されました。代わりに使用するには、vimdiff
次のいずれかのツールをインストールできます:meld
、、、、、、、、、、、、、、、。opendiff
kdiff3
tkdiff
xxdiff
tortoisemerge
gvimdiff
diffuse
ecmerge
p4merge
araxis
vimdiff
emerge
vimdiff
以下は、マージ競合を解決するためのサンプル手順です。このリンク。
ターミナルで次のコマンドを実行します
git config merge.tool vimdiff git config merge.conflictstyle diff3 git config mergetool.prompt false
vimdiff
これはデフォルトのマージ ツールとして設定されます。ターミナルで次のコマンドを実行します
git mergetool
vimdiff
次の形式で表示されます。╔═══════╦══════╦════════╗ ║ ║ ║ ║ ║ LOCAL ║ BASE ║ REMOTE ║ ║ ║ ║ ║ ╠═══════╩══════╩════════╣ ║ ║ ║ MERGED ║ ║ ║ ╚═══════════════════════╝
これら4つの見解は
- LOCAL:これは現在のブランチからのファイルです
- BASE:共通の祖先、両方の変更前のこのファイルの状態
- REMOTE:ブランチにマージするファイル
- MERGED:マージ結果。これはマージコミットに保存され、将来使用されるものになります。
ctrl+を使用してこれらのビュー間を移動できます。 +に続いて をw使用すると、MERGED ビューに直接アクセスできます。ctrlwj
MERGED ビューは次のように編集できます。
REMOTEから変更を取得したい場合
:diffg RE
BASEから変更を取得したい場合
:diffg BA
LOCALから変更を取得したい場合
:diffg LO
保存、終了、コミット、クリーンアップ
:wqa
保存してviを終了するgit commit -m "message"
git clean
余分なファイルを削除します (例*.orig
)。警告:引数を渡さない場合は、追跡されていないファイルがすべて削除されます。