EGitでマージしてみる

前回はGitのmergetoolコマンドでp4mergeを使うように設定し、マージ作業を行う方法を簡単にですが紹介しました。今回はコマンドラインのGitではなく、EGitを使ってやってみます。

EGitとは?

Java Developerならご存知の、IDEであるEclipseでGitを使うためのEclipseプラグインです。Eclipse.orgで公開されています。
詳細は【コラム】イマドキのIDE事情 (52) EclipseでGitを使おう! EGitを試してみる | エンタープライズ | マイナビニュース などで日本語の解説があるのでそちらを参照。
Eclipseは元々デフォルトではCVS用プラグインが組み込まれていました。次第にSVNが主流となり、SVNEclipseプラグイン(SubversiveまたはSubclipse)を別途インストールして使っている方が多いかと思います。
しかし今年リリースされたEclipse3.7からは、パッケージ*1によってはデフォルトでこのEGitが組み込まれるようになりました。SVNのプラグインって中々標準パッケージに入らないよなぁ〜と数年前に思ってましたが、Gitが追い越すとは全く思ってもいませんでした。

EGitでマージしてみる

前回と全く同じケースでマージしてみます。masterブランチとtopicブランチで同一のファイルを修正し、masterにtopicをマージしてみます。

  • まずはマージの実行。マージはプロジェクトを右クリック>Team>Mergeを選択し、マージしたいブランチを選びます。

f:id:Hirohiro:20111122201556j:image:w640
f:id:Hirohiro:20111122201557j:image:w500
もしくは、Historyビューからブランチを右クリックしてMergeを選択でもOK。
f:id:Hirohiro:20111122201559j:image

  • コンフリクトが起きると赤い競合のマークが表示されます。ここでマージツールを使います。競合を解決したいファイルやフォルダを右クリック>Team>Merge Toolを選択します。注意点として、プロジェクトのトップフォルダを右クリックしてMerge Toolを選択するとエラーになります(Empty path not permittedと出る。たぶんバグ)。

f:id:Hirohiro:20111122201558j:image:w640

  • Merge Toolを開く際に以下のダイアログが表示されます。ここではUse HEAD...の方を選択してOKをクリックする。

f:id:Hirohiro:20111122211052j:image

  • Merge Toolのエディタで競合を解決します。p4mergeと比べると高機能ではないですが、一応共通の親、マージ先、マージ元の3ペインで表示可能です。ここでマージ先の画面を修正し、保存します。

f:id:Hirohiro:20111122201600j:image:w640

  • 保存した後は、コマンドラインと同様Git add, commitをします。プロジェクトを右クリック>Team>Addした後に、プロジェクトを右クリック>Team>Commitを行います。

f:id:Hirohiro:20111122201601j:image:w640
f:id:Hirohiro:20111122201602j:image:w640

  • コミットログを修正するなら適宜修正してコミットを実行する。

f:id:Hirohiro:20111122201603j:image:w640

  • 以上でマージは終了です。Historyビューを見るときちんとマージされていることが分かります。

f:id:Hirohiro:20111122201604j:image

感想

  • p4mergeのように.gitconfigの設定とか不要なのでインストール、設定が簡単です。Eclipseを入れるだけでいいので。
  • Eclipse使いの方であれば、マージツールの使い方とかはエディタの比較機能とほとんど同じでなれているので使いやすいかも。

*1:例えばベーシックな Eclipse IDE for Java Developersとか