都内SEのプログラミング勉強と雑記

2008年より都内でSEをしてます。業務システムをリプレイスし続けてきました。ここでは主にjavaやその周辺技術関連を紹介予定。学ぶことリスト:https://docs.google.com/spreadsheets/d/1G4lUqbHxsMf4PGgeRVe1ZL3JTOjlSTrqsJYe1CKz9UY/edit?usp=sharing

git rebase時のコンフリクトで強制的に片方のブランチ内容を取り込む方法

f:id:object1985:20181002131746p:plain
git rebase時のコンフリクトを手修正やVSCodeなどを利用して解決もいいのですが、
ときにはめんどう。

そんなときにとる方法の紹介です。

コンフリクト解消手順の一例 rebase時など 一方を採用する

以下のように、checkout --ours と checkout --theirs を使い分ければ良い。

2つのブランチ間でコンフリクトしているファイル fileA.txt と fileB.txt があるとする

# fileB.txt をマージさせたブランチ側に合わせる場合
$ git checkout --ours fileA.txt
$ git add fileA.txt    # add を忘れずに

# fileA.txt を現在チェックアウトしているブランチ側の対応に合わせる場合
$ git checkout --theirs fileB.txt
$ git add fileB.txt

$ git commit

# pushでサーバへ

個人的にoursとtheirsが逆転しがちですが、なんとか覚えます。

follow us in feedly