gitでコンフリクトしたときの解消手順
作業ブランチからmasterブランチへPRを作成したときにコンフリクトが発生した場合の解消手順をメモ
まずローカルのmasterブランチを最新にする
code: bash
# ブランチをmasterに切り替え
git checkout master
# pullしてローカルのmasterブランチを最新の状態にする
git pull origin master
ローカルの作業ブランチに切り替えてmasterをマージする
code: bash
# 作業ブランチ(hoge)に切り替え
git checkout hoge
# masterブランチをmergeする
git merge master
そうすると、こんなかんじでマージしたよというメッセージが出る
code: bash
Auto-merging lib/tasks/bootcamp.rake
Auto-merging db/schema.rb
CONFLICT (content): Merge conflict in db/schema.rb
Auto-merging config/routes.rb
Automatic merge failed; fix conflicts and then commit the result.
コンフリクトしているファイルを修正し、git addする
あとはcommitしてpushすればOK。
このときコンフリクト以外のmasterとの差分のコミットもpushされるが、コミット番号が同じなのでPRに差分コミットとして表示されることはない。
git pull origin masterで差分をとりこもうとした場合、コンフリクトが発生すると自動的にrebaseされてコミット番号も変わってしまうので、masterでの変更もPRの差分として出てきてしまうっぽい。