[Git] git merge で conflict したファイルをどちらか一方のブランチの内容で更新する方法

CLI と SourceTree のそれぞれでの対応。

CLI でコンフリクトを解決する

git checkout コマンドには –ours や –theirs オプションを指定することもできます。これを使うと、何かをマージする代わりに、どちらか一方を選択して簡単にチェックアウトできます。 これは、バイナリデータのコンフリクトを解消するとき(使いたい方を選べばよい)や、他のブランチから特定のファイルを取り込みたいときに便利でしょう。後者であれば、マージコマンドを実行してから該当のファイルを –ours か –theirs を指定してチェックアウトし、コミットしてください。

Git – 高度なマージ手法

今いるブランチが --ours でマージしようとしているブランチが --theirs となります。

% git checkout --theirs .
Updated 1 path from the index

後はいつも通り git add git commit を行います。

% git add .
% git commit 

上述のようにパスを指定できるので、ファイル単位やディレクトリ一括指定も可能です。

SourceTree でコンフリクトを解決する

コンフリクトが起きているファイルを選択し、右クリックをすると「 競合を解決」メニューが表示されます。