EclipseでGitを使う(6)マージツールを使う。
0.はじめに
本記事は、EclipseでGitを使ってバージョン管理をしていく方法を説明していくシリーズの第6回です。プルを行った際に、別のメンバが既にプッシュした内容と自分のローカルリポジトリの内容で競合が発生した場合に、マージツールを使用して競合を解消する方法を説明します。
1.プッシュが拒否される
まずは、前回同様に、既に別ユーザが修正&プッシュが完了した状態で、ローカルで修正した内容をプッシュしようとしてみましょう。今回は≪別ユーザ≫と≪自分≫で、以下のような修正を各々加えています。
≪別ユーザ≫
コミットコメント:
Mod Sample1
Add main method line6
プッシュしたファイル:
public class Sample1 { public static void main(String[] args){ System.out.println("Sample1 modified!"); System.out.println("from sourceTree"); System.out.println("from sourceTree2"); //☆ここで競合予定 } }
≪自分≫
コミットコメント:
Mod Sample1
Add main method line6
プッシュしようとしているファイル:
public class Sample1 { public static void main(String[] args){ System.out.println("Sample1 modified!"); System.out.println("from sourceTree"); System.out.println("Add ! ! ! "); //☆ここで競合予定 } }
さて、自分のEclipseから、プッシュを行いましょう。「拒否」されればOKです。
このようにプッシュが上手くいかない時には「フェッチ&マージ」(または「プル」)を行うのでしたね。
2.フェッチ&マージ
まずはフェッチしましょう。
以下のようにGitヒストリーが枝分かれするのでしたね。
次にマージしましょう。
プロジェクトを右クリックして「マージ」でしたね。ここで、競合が発生します。
競合が発生すると、赤い矢印「⇔」が競合箇所に表示されます。
さぁ、いよいよマージツールの登場です。
3.マージツールを使う
プロジェクトを右クリックし、「マージツール」を選択しましょう。
以下のようなダイアログが表示されますので、OKをクリックします。
どこが競合しているのか一目でわかりますよね。
マージツールは競合を解消する際に、競合箇所を左右で比較して変更することができる便利なツールです。
「←」の矢印アイコンをクリックすると、右側の競合箇所が左側に移動します。
単純にリモートリポジトリの内容をローカルリポジトリにもっていくだけであれば、これだけで十分です。
修正が発生する場合には、1つずつ競合箇所を修正していきましょう。その時には「↓」矢印アイコンで、
次の競合箇所へと移動していくことができます。
今回は、右側から左側に一行コピペし、以下のようにしてみました。
public class Sample1 { public static void main(String[] args){ System.out.println("Sample1 modified!"); System.out.println("from sourceTree"); System.out.println("Add ! ! ! "); System.out.println("from sourceTree2"); //☆ここを追加。 } }
4.コミット&再プッシュ
あとは前回と同じような動きになります。
同期化ビューを使用して、マージ済みとマークしてから再度コミット。
改めてプッシュすれば無事にプッシュできるはずです。
5.まとめ
今回はマージツールを使って競合を解消する方法を書きました。視覚的に競合を修正しやすいというメリットはありますが、少々の修正であれば前回のようにしてもよいかもしれません。競合はよく起こりうることなので、手順に慣れておくとよいでしょう。