rksoftware

Visual Studio とか C# とかが好きです

rebase でコンフリクトを解消する

git で本家のブランチとコンフリクトして Pull Request ができないこと、よくあると思います。
その際に rebase でコンフリクトを解消する方法があるようです。

■ コンフリクトして PR ができない様子

ここでは feature0001 から枝分かれした feature0002 の変更を feature0001 に返そうとしてコンフリクトしたものと考えます。

■ 解消手順

まず feature0002 ブランチに移動します。

git checkout feature0002

feature0001 ブランチの変更を feature0002 に取り込みつつ、feature0002 でかけた変更を feature0001 での変更の後ろにくっつけます。

git rebase feature0001

この時競合するファイルが赤くなり、差分がテキスト内に書き込まれた状態になるので

手で最終状態に変更して保存します。

その変更を追加します。

git add text1.txt

コミットします。

git commit -m "add file 3"

feature0002 で行っていた変更コミットと、今 rebase でできた二つの変更コミットを squash でまとめます。

squash についてはこちら。 rksoftware.hatenablog.com GUI でなくコマンドで強制 push します。

git push -f origin feature0002

これでコンフリクトなく PR できました。