gitマージのコンフリクトで片方ブランチのファイル変更内容を採用

スポンサーリンク

git でブランチの merge 時に conflict が生じた場合は、基本的には手動で1ファイルずつエディタで修正をかけていくわけですけど、場合によってはどちらか一方のブランチのファイルの変更内容を全面的に採用したいケースがあります。

git merge でコンフリクトが生じると、ファイルに以下のようにコンフリクト箇所がマークされる。この場合に HEAD(現在のブランチ)または another-branch(マージしようとしたブランチ)のどちらかのブランチのファイル変更のみを全面的に採用したい場合の話です。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

git checkout を –theirs / –ours オプションとともに使う

Rails プロジェクトの場合で例を挙げますと、Gemfile.lock や db/schema.rb などのファイルがよくコンフリクトして、片方のブランチの変更を全面的に採用したいケースが多いです。Gemfile.lock は、Ruby – BUNDLED WITH で Gemfile.lock が更新されてしまう件 – Qiita のために、近頃よくコンフリクトが発生します。

git checkout を –theirs / –ours オプションとともに使うと、conflict が生じた場合に、片方のブランチのファイル変更内容のみを全面的に採用することが可能です。以下のように feature-branch で作業中で another-branch をマージしようとしたところ、Gemfile.lock や db/schema.rb がコンフリクトした場合と仮定します。

another-branch のファイル変更内容を全面的に採用する場合。

feature-branch のファイル変更内容を全面的に採用する場合。

そして、その後コミット。

以上の手順で、コンフリクトが発生した場合に、片方のブランチの変更内容のみを採用することができます。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!