Pull Requestで競合した時のマージのやり方

GitHubを使ってる時にPullRequestを送って競合することがあった。

その時、どんなふうに対応すればいいかを備忘録で残しておく。

競合を起こすファイルを作る

まずは適当なサンプルファイルを作る。

f:id:mediator1994:20200311232917p:plain

このファイルをベースにして競合ファイルを作る

2つのブランチを作成して、それぞれ違う修正を行う。

f:id:mediator1994:20200311233137p:plain

masterブランチにこの修正を加える

f:id:mediator1994:20200311233249p:plain

master2ブランチにこの修正を加える

このmaster2ブランチをmasterの方にむけてプルリクエストを送る。

そうすれば、自動マージはできずにCan't automatically mergeの文言が出てくる。

f:id:mediator1994:20200311233557p:plain

自動マージできないので、手動でマージしろ

プルリクエストから手動マージを行う

先ほどの状態でプルリクエストを送ると、以下のようにresolve conflictsが出てくる。

このボタンから手動マージする画面へと遷移できる。

f:id:mediator1994:20200311233831p:plain

差分が赤い線で、以下の2つに分けて表示される。

  1. <<<<<<<から=======まで
  2. =======から>>>>>>>まで

f:id:mediator1994:20200311233944p:plain

差分が出てくる

これを自分で修正して直せばOKだ。

 

無事マージが終わったら、Merge as resolvedでマージ済のチェックをつける。

そしてCommitすれば、マージが完了する。

f:id:mediator1994:20200311234527p:plain

Mergeが終わったらマージ完了にする

f:id:mediator1994:20200311234644p:plain

マージが完了したら、プルリクエストができるようになるはず。

この状態になれば、従来通りリベースするなり、マージして入れるなりすればいい。

f:id:mediator1994:20200311234835p:plain

マージが完了したら、プルできるようになるはず

f:id:mediator1994:20200311235026p:plain

ちゃんと適応されていた