プルリクでマージできない
衝突(Conflict)が起こったときは
プルリクエストを作ろうと思ったら、衝突が起こった
そんなときは、プルリクエストのマージボタン周辺が以下のような表示になります。
Resolve conflict というボタンから、GitHubで直接、衝突の修正をする機能もあるのですが、いかんせん使いづらいので、弊社では、衝突はローカルリポジトリで解決してからプッシュする という運用ルールでやっています。
衝突が起こる原因
それは、プッシュしたブランチ(図の中のfix-html)より、マージ先のブランチ(develop)のほうが新しくなっていて、しかも編集箇所が被ってしまった場合に起こります。
「リベース」で派生元のブランチ、コミットを変更できる
Git Graphで、派生元を変えたいブランチをチェックアウトしてから、developの最新のコミットを右クリックして、メニューの中から「Rebase」を押します。
リベースは、つまるところマージと同じ処理です。マージと同じように、衝突の解決フローがはじまります。
リベースで、一直線の枝になりました
(枝分かれしているのは、リモートに残っているブランチです)
修正した内容をプッシュ
派生元を変更したブランチは、差分コミットで動く通常のプッシュは行えません。
ブランチのを強制上書きする「フォースプッシュ」を使用します。
プッシュのモードから、Forceを選択してください。
フォースプッシュ後の表示は、以下のようになります。