[解決済み】vimdiff を使って git のマージの衝突を解決するにはどうしたらいいですか?
質問
あるブランチを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します。より良いアイディアがあれば、まったく別のことをする。最終的に、ここで行った変更が実際にコミットされることになります。
関連
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] git initを2回実行すると、リポジトリが初期化されますか?それとも既存のリポジトリを再初期化しますか?
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Gitのビジュアルマージツールとして最適なものは?[クローズド]
-
[解決済み] git rebase、'local' と 'remote' を追跡する
-
[解決済み] git のマージの衝突で、生成される BACKUP、BASE、LOCAL、REMOTE ファイルは何ですか?