1. ホーム
  2. ギット

[解決済み】vimdiff を使って git のマージの衝突を解決するにはどうしたらいいですか?

2022-04-11 06:42:30

質問

あるブランチをgitでmasterにマージしたところ、次のようになりました。 Automatic merge failed; fix conflicts and then commit the result. 今、私は走った git mergetool と表示され、vimdiffが開き、下のような画像が表示されました。vimdiffの使い方がわからない。ここにある各パネルの意味と、マージの競合を解決するにはどのように進めばよいですか?

解決方法は?

4つのバッファはすべて、同じファイルの異なるビューを提供します。左上のバッファ(LOCAL)は、ターゲットブランチ(マージ先)でのファイルの見え方です。右上のバッファ (REMOTE) は、ソースブランチ (マージ元) でファイルがどのように見えたかを表します。真ん中のバッファ (BASE) は、この 2 つの共通の祖先です (左右のバージョンが互いにどのように分岐したかを比較することができます)。

次の点については、私の思い違いかもしれません。マージの衝突の原因は、両ファイルがBASEから同じ部分を変更していることだと思います。LOCALは引用符をダブルからシングルに変更し、REMOTEは同じ変更をしていますが、背景の値も色からURLに変更されています。(マージは、LOCALへのすべての変更がREMOTEにも存在することに気づくほど賢くないと思います。LOCALがBASE以降にREMOTEと同じ場所で変更を行ったことだけを知っているのです)。

いずれにせよ、一番下のバッファには、実際に編集可能なファイル(作業ディレクトリにあるファイル)が入っています。好きなように変更することができます。 vim は、上の各ビューとの違いを示しています。これは、自動マージが処理できなかった部分です。REMOTE の変更が必要ない場合は LOCAL から変更を引っ張ってきてください。LOCAL の変更より REMOTE の変更の方がいい場合は、REMOTE から変更を取り込みます。REMOTEとLOCALの両方が間違っていると思う場合、BASEからPullします。より良いアイディアがあれば、まったく別のことをする。最終的に、ここで行った変更が実際にコミットされることになります。