最低限おさえておきたいEGitの使い方について

最近ソース管理にGitを使うプロジェクトがかなり増えてきました。ソース管理はSVNで十分と思っているユーザもプロジェクトの方針としてGitになった場合、最低限の操作を覚えないと作業に支障をきたしてしまいます。その際にコマンドラインで操作しても良いのですが、今までSVNSubversiveとかSubclipseなどを使ってきたEclipseユーザは、EclipseからGitを操作したいところです。

そこでEGitを使おうと思ってもEGit自体はそこそこ歴史がある割に意外と情報が少なくて困ってしまった人もいるのではないでしょうか?。

今回はプロジェクトで使うに当たって、最低限知っておけばどうにかなりそうな操作をまとめてみることにしました。構成としては利用者側としてGitを利用することを想定してみました。実際、作業して順番とは違うのでファイルに一部矛盾するところがありますが気にしないでください。

私自身まだまだ知らないことも多いので、間違っている点やもっと効率よく出来る点などがございましたらご指摘ください。

環境としては以下で試しています。
OS:Mac
Eclipse:3.6
EGit:1.0

リポジトリにはGitHubを利用しています。

Gitのリモートリポジトリからプロジェクトを取得

誰かがGitに上げたプロジェクトをEclipseに取り込みます。Gitではcloneすると言います。
Package Explorerを右クリック>importを選択します。

Git>Projects from Gitを選択します。

取得するリポジトリを指定します。GitHubの場合、Webでコピー出来るurlをURL欄にコピーします。Protocol欄にSSHを選択します。するとURL欄がSSHにあわせて変更されますが、そのままでかまいません。nextをクリックします。

cloneするリポジトリを選択してnextをクリックします。

ローカルリポジトリを作成する必要があるのでパスを指定します。指定したらfinishをクリックします。

importするプロジェクトの選択が表示されます。そのままnextをクリックします。

今回はEclipseプロジェクトをGitからcloneするので、Import Existing Projectsにチェックしてnextを押します。

importしたいプロジェクトを選択してfinishをクリックします。

これでEclipseにプロジェクトをcloneすることが出来ました。

ローカルリポジトリへのcommit

Gitの場合、ファイルを修正したらまずはローカルリポジトリにcommitします。

では現在のプロジェクトをローカルリポジトリにcommitしてみます。右クリック>Team>Commitを選択します。

初回はユーザ情報を求められるので入力します。

コミットダイアログが表示されるのでコメントの入力とコミットするファイルを選択して、commitボタンを押します。

これでローカルリポジトリにコミットが出来ました。マーク「?」が消えているのが確認出来ると思います。

Gitの場合、commitしただけではソースを反映することが出来ません。その後にリモートリポジトリに対してpushする必要があります。続いてリモートリポジトリにpushする方法についてです。

リモートリポジトリにpushする

ローカルリポジトリにcommitしたらリモートリポジトリに反映させるためにpushする必要があります。
プロジェクトを選択して、右クリック>Team>Remote>Pushをクリックします。

pushするリポジトリを設定してnextをクリックします。

pushしたいブランチを選択します。

選択したらAdd Specボタンをクリックします。するとSpecifications for pushに設定が反映されます。nextをクリックします。

確認画面が表示されるのでfinishをクリックします。

このとき初回の場合、セキュリティの警告が出る場合があるようです。

完了画面が表示されOKをクリックして完了です。

自分や他の人が変更した内容の確認

変更を確認します。
プロジェクトを選択して右クリック>Team>Synchronize>FETCH_HEADを選択します。

Synchronizing perspectiveを表示するかとダイアログで訪ねられます。YesでもNoでもかまいません。ここではYesを選択します。

リポジトリとの差分が表示されます。ここでは、HelloWorld.scalaが他の人から編集されて、HelloWorld2.scalaが自分が新規に作成したことを表しています。

ファイルをダブルクリックすると差分を確認することが出来ます。

HelloWorld.scalaを選択して右クリック>Mergeで取り込むことが出来ます。

自分の更新は通常と同じようにcommit→pushで対応します。

ローカルリポジトリの登録

一応、プロジェクトの登録についても説明します。ここではGitTestというプロジェクトを登録してみることにします。
まずは、プロジェクトを選択して、右クリック>Team>Share Projectを選択します。

Gitを選択してNextをクリックします。

ローカルリポジトリのパスを指定してリポジトリを作成します。createボタンを押して選択ダイアログを表示されます。

ローカルのGitリポジトリのパスを選択します。好きな場所を選択しましょう。ここでは、/local_gitを指定しました。名前にGitTestを指定しました。

チェックボックス「Use or create Repository in parent folder of project」にチェックをつけると現在のプロジェクトにリポジトリを作ることも出来ます。

注意点としては、その後リモートリポジトリに登録した際にリポジトリを指定する方の方法だとGitTestリポジトリの下にEclipseのGitTestプロジェクトが配置されるような構成になるようです。チェックボックスをチェックする方法だとGitTestリポジトリの下にGitTestフォルダは作られません。GitHub有料オプションを使用していて利用出来るリポジトリに制限がある場合などは上のパターンを利用した方がよいでしょう。

自分でリポジトリの場所を選んだ場合

チェックボックス「Use or create Repository in parent folder of project」にチェックをつけた場合

リポジトリを選択したらFinishボタンを押して終了です。

リポジトリの設定が出来ました。以下のような感じになっていると思います。

終わりに

今回はEGitについてまとめました。画像をふんだんに使用したため何気にものすごく手間がかかりました。EGitは安定していないかな?と感じることもありますが十分に実用で使用出来るレベルに達してきていると思います。私自身も知らない機能がたくさんあるのでご存知の方は色々と教えていただけるとありがたいです。

EGitについてさらに詳しく知りたい場合は、以下にUser Guideがあるので参照してみてください。
http://wiki.eclipse.org/EGit/User_Guide