使い方
参考:
コンフリクト発生!焦らず利用する4つのコマンド – Qiita
Git のマージコンフリクトを解決する方法 | yu8mada
Rails で良くコンフリクトするファイルの対処法 – Qiita
git merge でのコンフリクト (競合) の解決方法まとめ | WWW クリエイターズ
コンフリクトが発生しているファイルの一覧を表示する
$ git diff --name-status --diff-filter=U $ git diff --name-only --diff-filter=U $ git ls-files -u $ git ls-files -u | cut -f 2 | sort -u
参考:
git checkout --theirs / --ours
--ours
:マージ元 (カレントブランチ)--theirs
:マージ先 (コマンドで指定したコミット)
マージ元のファイルをチェックアウトする。
$ git checkout --ours the_confilicted_file
マージ先のファイルをチェックアウトする。
$ git checkout --theirs the_confilicted_file
参考:
マージ時のコンフリクトで片側の変更だけ適用する方法 – Qiita
git rebase でコンフリクト時の checkout オプションの --theirs と --ours – Qiita
Ours or Theirs? #1 | The Miners
Ours or Theirs? #2 | Will Soares
コンフリクトしたファイルをまとめてチェックアウトする
コンフリクトしているファイルを全て元のファイルにチェックアウトする。
$ git diff --name-only --diff-filter=U -z | xargs -0 git checkout --ours
コンフリクトしているファイルを全てマージ先からチェックアウトする。
$ git diff --name-only --diff-filter=U -z | xargs -0 git checkout --theirs
コンフリクトファイルを全て再生成する。
$ git diff --name-only --diff-filter=U -z | xargs -0 git checkout --conflict=merge
参考:
マージ時のコンフリクトで片側の変更だけ適用する方法 – Qiita
Using git diff with xargs -0, spaces in file names – Super User
git pull でコンフリクトが発生した場合
参考:
git pull とかでコンフリクトが起こったときの対処 | Mattari Memo
プルリクエストでコンフリクトが発生した場合
参考:
プルリクエストでコンフリクトが発生した場合の対応 – Qiita
ひとり Pull Request その少し先へ | sci (sci.hateblo.jp)
プルリクした時にコンフリクトした場合の対応方法 | Koushi Kagawa
プルリクエストでコンフリクトしたときの対処方法 | Laravel 学習帳 (laraweb.net)
マージ元で削除したファイルがマージ先で修正されている場合
参考:
How do I fix a merge conflict due to removal of a file in a branch? – Stack Overflow
バイナリファイルのコンフリクト
バイナリファイルがコンフリクトした場合、マーカーが挿入されたコンフリクトマージファイルは生成されず、単にマージ前のファイルがそのままになっている。
マージ出来なかった旨の警告が表示される。
warning: Cannot merge binary files: ... (ours vs. theirs)
マージ先のファイルに置き換えたい場合は、--theirs
オプションを付けてチェックアウトする。
$ git checkout --theirs path/to/conflicted_binary.ext
参考:
マージでバイナリファイルがコンフリクトした場合の Git の動作と対処方法 | アインシュタインの電話番号
バイナリファイルでコンフリクトが起きた時の解決法 | エンジニアの階段
Resolving a Git conflict with binary files – Stack Overflow
Tips
参考: