EGitのマージツールを利用してみた

otaguro 352views 更新:2015年10月8日

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)を押します。すると、ファイルが左の画面の内容に置き換わります

基本的には「右から左へ全ての非競合をコピー」のボタンを押して、スクロールして赤色の箇所だけ手作業で修正すれば大丈夫そうです。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません