Githubのmasterにマージしたい2つのブランチの編集内容が競合するようでしたので、競合を解決するためにEGitのマージツールを利用してみました。
ハック Github で Pull Request がコンフリクトした場合の対処方法の3.の「修正」の部分の方法になります。
masterから新規作成したブランチに一方のブランチを自動マージした後、もう片方のブランチをマージしようとすると競合が発生しました。
EGitで競合が発生すると、ファイルの競合箇所はこんな感じになります。
<<<<<<< HEAD ALStringField week_5, ALStringField week_6, ALStringField repeat_week, ALStringField limit_flag, ALDateField limit_start_date, ALDateField limit_end_date, ALNumberField month_day, ALEipUser login_user, String entityid, List<String> msgList, boolean isCellPhone) throws ALDBErrorException, ALPageNotFoundException { ======= ALStringField week_5, ALStringField week_6, ALStringField limit_flag, ALDateField limit_start_date, ALDateField limit_end_date, ALNumberField month_day, ALNumberField year_month, ALNumberField year_day, ALEipUser login_user, String entityid, List<String> msgList, boolean isCellPhone) throws ALDBErrorException, ALPageNotFoundException { >>>>>>> refs/remotes/origin/features/schedule-yearly
上が、現在チェックアウトしているブランチで、下がこれからマージしたいブランチのファイルの内容になってます。直接ファイルを編集してもいいですが、マージツールを利用すると元々のファイル(2つのブランチの変更前のファイル)とも比較できて、より分かりやすく編集できます。
マージツールの使い方の概要
- 競合しているファイルを右クリック→チーム→マージツール
- 「上位ペインの表示」ボタンを押すと、元々のファイルが表示されます。
- 上の画面が元々のファイル
- 左の画面がマージ先のファイル(HEAD)
- 右の画面がマージ元のファイル(2番目にマージしようとしたブランチ)
- 灰色の箇所が元々のファイルと左の画面との差分
- 青色の箇所が元々のファイルと右の画面との差分
- 赤色の箇所が左と右の画面の競合箇所
- 青色は非競合の箇所なので、左と右の画面の間の四角いボタンを押して、右から左へコピーする(かどうか考える)
- 赤色の箇所は、左の画面で手作業で編集します
- 編集し終えたら、マージツールの画面で上書き保存(Ctrl+S)を押します。すると、ファイルが左の画面の内容に置き換わります
基本的には「右から左へ全ての非競合をコピー」のボタンを押して、スクロールして赤色の箇所だけ手作業で修正すれば大丈夫そうです。