EGit 5.6.1
— y2sunlight 2020-06-10
本章では、EclipseでGitを使用すための EGit プラグインについて説明します。EGit は、Eclipse用のGit統合のためのプラグインです。Eclipseを MergeDoc Project からダウンロードする場合、EGit はバンドルされているのでインストールの必要はありません。
本章は、社内のGitサーバに共有リポジトリを置き、それをLAN内のクライアントPCから使用する場合を想定していますが、Gitとの接続プロトコルはSmart HTTPなので、GitHubのようなホスティングサービスに対しても応用が利くと思います。
クライアント環境
関連記事
リンク
Eclipse を MergeDoc Project からダウンロードする場合、EGit インストール済ですが、そうでない場合は、以下の手順でインストールして下さい。
メニューの[ヘルプ][新規ソフトウェアのインストール…]を選択します。
1. 作業対象から http://download.eclipse.org/egit/updates
を選択します。
2. このURLが存在しない場合は以下に従って下さい。
[追加…]ボタンを押して下さい。
■ 次のように入力します。
EGit
http://download.eclipse.org/egit/updates
■ [追加ボタン]を押します。
3. 上図のように表示された一覧全てをチェックして、[次へ]を押します。
4. 以降は指示に従って、EGitをインストールして下さい。
5. インストールが終わるとEclipseが再起動します。
Gitの設定画面(git config)は次のようにして開きます:
■ [core][autocrlf]を false
に変更します。(既に設定済の場合は不要です)。
■ [エントリー追加…]ボタンを押して次の2項目を追加し、[適用]ボタンを押します。
(既に設定済の場合は不要です)。
user.name
ですuser.email
です■ これは必要最小限のGitの設定です。
このユーザ設定は Git for Windows が参照しているユーザ設定ファイル(C:\Users\sunlight\.gitconfig
)と同じものに保存されます。
また、他の設定(リポジトリー設定、システム設定)も Git for Windows と同じファイルに保存されている点に注意して下さい。
社内のGitサーバーにプロジェクト用の新しい共有リポジトリを作成します。
cd /var/git # 共有リポジトリのルートディレクトリに移動する git init --bare --shared ./hello.git # 新しい共有リポジトリを作成する chown -R apache:apache ./hello.git # ディレクトリの所有者とグループを apache に変更する cd ./hello.git # リポジトリのディレクトリに移動する git config http.receivepack true # receivepack(git push) を有効にする
リポジトリ名は hello.git
としました。共有リポジトリ作成の詳細は本編の「Gitサーバーの構築 - Gitデーモン/Smart HTTP」を参照して下さい。
本編の環境下では、hello リポジトリへの接続URLは、以下のようになります。
http://192.168.11.108/git/hello.git # IPアドレスは適宜読み替えて下さい。
ここではワークスペースとして D:\\usr\workspace\git
を使用し、以下のフォルダをプロジェクトフォルダに指定します。
D:\\usr\workspace\git\hello
Eclipseを起動して、メニューから[ファイル][インポート]を選択します。
■ [Git][Gitプロジェクト]を選択し、[次へ]を押します。
■ [クローンURI]を選択し、[次へ]を押します。
■ [URI]を入力します(ここでは http://192.168.11.108/git/hello.git
を入力しています)。
■ URIを入力するとそれに応じて他の項目は自動で表示されます。
■ 本編では信頼のあるLANに対しては認証を要求しない設定なので、認証は空欄のままです。
■ [次へ]を押します。
■ [次へ]を押します。
リポジトリはまだ空なので「ソース Gitリポジトリは空です」のメッセージが出ますが問題ありません。リポジトリが空でない場合は、ここでブランチを選択します。
■ ローカルリポジトリの保存先にはワークスペース下のプロジェクトフォルダを指定します。
ここでは D:\usr\workspace\git\hello
を指定します。
■ 初期ブランチは表示されていません(デフォルトでは master
になります)
■ リモート名は origin
(デフォルト値)のままで良いです。
■ [次へ]を押します。
■ [新規プロジェクト・ウイザードを使用してインポート]を選択して、[完了]を押します。
本編では、プロジェクトの設定ファイルをリポジトリに保存しない方針なので、インポートの際は常にこの設定(新規プロジェクト・ウイザードを使用してインポート)を使用します。
■ [PHPプロジェクト]を選択して、[次へ]を押します。
■ [プロジェクト名]に hello
を入力して、[完了]を押します。
hello
フォルダは既にローカルリポジトリして作成されているので「指定された外部ロケーションは既に存在します」のメッセージが出ますが問題ありません。
EGit(またはGit)を使用するための基礎的な用語について説明します。チェックアウト、コミット、ブランチなどの一般的なVCS(バージョン管理システム)の用語については、他の参考書などで調べて下さい。ここでは、EGitプラグイン用に限定して説明します。
ブランチは、Eclipseでは プロジェクトエ・クスプローラでプロジェクト名の横に表示されます。
リポジトリに最初のコミットを行うと、Git は master という名前のブランチを作成します。そのため、以後のコミットはブランチを切り替えるまで master ブランチに追加されていきます。
masterブランチは、Git Flowモデル や GitHub Flowモデルでは:
となっています。また、Flowモデルには、GitLab Flow や GitFeature Flowなども存在します。個々のプロジェクトの特性に応じたブランチモデルや独自のルールを採用してブランチの運用を行って下さい。
リンク
origin はデフォルトのリモートリポジトリのURLを指す別名です。
origin は git config
で設定可能で、EGitでは初期設定で説明したGitの設定画面の [リポジトリ設定] から確認または変更できます。
リモートリポジトリの設定ファイルは {リポジトリディレクトリ}¥.git¥config
に保存されています(本編の設定では、リポジトリとプロジェクトが同じディレクトリです)。
origin/master
という表記は origin(デフォルトのリモートリポジトリ)のmasterブランチであることを意味します。originを省略し master
だけではローカルリポジトリのmasterブランチと言う意味になります。
HEADは現在のブランチの先頭リビジョンを意味します。即ち、HEADは次にコミットするリビジョンの親リビジョンとなります。
「HEADリビジョン」は、比較、置換や復元操作でよく使用される表現です。例えば、プロジェクトエクスプローラーでファイルを右クリックして[比較]を選択すると以下のメニューが表示されます。
このメニューで[HEADリビジョン]を選択すると、Eclipseは現在編集中のファイルとブランチの先頭リビジョンを比較します。同様に[置換]で同じ事をすると、編集中のファイルがブランチの先頭リビジョンに置換されます。
また、HEADを起点に世代を遡る表記には 以下のものがあります。
HEAD~ # HEADの1世代前のリビジョン HEAD~~ # HEADの2世代前のリビジョン HEAD~2 # HEAD~~と同じ
Gitでは、SVNのようなパージョン管理システムとは異なりロポジトリにコミットする際に「[変更] => [コミット]」という流れをとりません。Gitでは、プロジェクト内で変更されたファイルの中からコミット対象のものを選択して[インデックス]に登録する作業が発生します。そしてこの登録作業のことを「ステージング」と呼び、「ステージ」とはインデックスの同じことを意味します。
即ち、「ステージング」とはコミット対象のファイルをインデックスに登録する事を指します。従って、Gitでは、「[変更] => [ステージング] => [コミット]」という流れでコミット作業が行われます。ステージングは一見面倒な作業ですが、実際にコミットするファイルだけを選別し、テストを完了したものだけどステージングすることで、コミットの破棄はやり直しなどの余計な作業を排除することができます。
EGitでは、ステージング用に [Gitステージング]用のビュー が用意されています。
まだ、表示されていない場合は、メニューの[ウィンドウ][ビューの表示][その他…]を選択して [Git][Gitステージング]ビューを開いて下さい。
最初にプロジェクト関連のファイルをプッシュしますが、本編ではプロジェクト関連ファイルはリポジトリに保存しない方針なので、これらのファイルをリポジトリ登録から除外する為のファイル(.gitignore)を共有リポジトリにプッシュします。
[プロジェクト・エクスプローラー]で以下のフォルダまたはファイルを右クリックして、[チーム][無視]を選択して下さい。この時、.gitignore
ファイルが無視を行ったフォルダに作られます。
これらのファイルが表示されていない場合は本編のEclipseの記事「プロジェクト・エクスプローラーの設定」を参照して 隠しファイル(.*)の表示 を行って下さい。
EGitでプッシュする方法はいろいろありますが、ここでは、Gitコマンドと同じ流れで git add
、 git commit
、git push
の順に進めていきます。
(1) .gitignore
を右クリックして、[チーム][索引に追加]を選択します。
(2) .gitignore
を右クリックして、[チーム][コミット…]を選択すると[Gitステージング]タブ表示されます
■ コメント・メッセージを入力して[コミット]ボタンを押します。
(3) プロジェクト hello
を右クリックして、[チーム][プランチのプッシュ'master'…]を選択します。
■ ここではまだリモートリポジトリにブランチがない状態です。
■ ローカルのmasterブランチをリモートのmasterブランチにプッシュします。
■ [プレビュー]ボタンを押して下さい。
■ プッシュ内容を確認して、[プッシュ]ボタンを押します。
■ プッシュ結果が表示されるので内容を確認後、[閉じる]ボタンを押して下さい。
以下では、プロジェクトインポート後によく使うGitのユースケースについて説明します。
コミット後に変更したファイルは[Gitステージング]タブの[ステージされていない変更]に表示されます。[Gitステージング]タブを表示していない場合は上の「ステージング」を参照して表示して下さい。
■ ファイルを選択し[+]ボタンを押すと、そのファイルは[ステージングされた変更]に移動します。
■ [ステージングされた変更]に含まれるファイルは、コミット対象になります。
■ ステージングから除外したい場合は、ファイルを選択し[-]ボタンを押すと、そのファイルは[ステージされていない変更]に戻ります。
[Gitステージング]タブの[ステージングされた変更]に含まれるファイルがコミット対象になります。
■ [コメント・メッセージ]を入力して下さい。
■ [コミット]ボタンを押すとローカルリポジトリにコミットされます。
■ 簡単な修正の場合は、コミットとプッシュを一度にすることもできます。この場合は [コミットおよびプッシュ]ボタンを押して下さい。ローカルリポジトリにコミットされた後、リモートリポジトリにプッシュされ、プッシュ結果の画面が表示されます。
コミット済で未プッシュのファイルがある場合、[プロジェクト・エクスプローラ]のプロジェクト名の横に ↑(数字)
が表示されます。
未プッシュのファイルをリモートリポジトリorigin にプッシュする場合は、プロジェクト名(右図の場合は hello)を右クリックして[チーム][アップストリームへプッシュ]を選択して下さい。
■ プッシュ結果が表示されるので内容を確認後、[閉じる]ボタンを押して下さい。
[プロジェクト・エクスプローラ]で、プロジェクト名を右クリックして[チーム][プル]を選択して下さい。
■ プル結果が表示されるので内容を確認後、[閉じる]ボタンを押して下さい。
ファイルの編集を最新のコミット時点まで戻したい場合は、置換機能が便利です。[プロジェクト・エクスプローラー]で、対象となるファイルを右クリックして [置換][HEADリビジョン]
を選択します。
■ [変更を破棄しますか]ボタンを押して下さい。
前回のコミット時点と比較したい場合は、置換と同様に[比較][HEADリビジョン]
で出来ます。
削除したファイルを復元するには、[Gitステージング]タブで行います。
■ 復元したいファイルを右クリックして [HEADリビジョンと置換]
を選択します。
ここで復元したファイルは前回のコミット時点のものです。削除時点に戻すには、復元したいファイルを右クリックして [ローカル・ヒストリーからの復元…] で行って下さい。
全ての編集を取消し、最新のコミット時点まで戻したい場合は、リセットを使います。[プロジェクト・エクスプローラー]で、プロジェクトを右クリックして [リセット]
を選択します。
■ 作業ディレクトリを含め全てを元に戻す[ハード]を選択し、[リセット]ボタンを押します。
コミットの取り消しは、[Git参照ログ]から行います。まだ、表示されていない場合は、メニューの[ウィンドウ][ビューの表示][その他…]を選択して [Git][Git参照ログ]ビューを開いて下さい。
同様の操作はプロジェクトの[ヒストリー]からもできます。プロジェクトの[ヒストリー]を表示するには、[プロジェクト・エクスプローラー]からプロジェクトを右クリックして[チーム][ヒストリーに表示]を選択して下さい。
下図は [Git参照ログ] の例です。ここでは、最新のコミットを取消してもう1つ前のコミットまで戻す操作を行ってみます。
■ 1つ前のコミットを右クリックして[リセット]を選び、[ソフト]、[混合]そして[ハード]の中からどんな状態まで戻すかを選択します。