GitとGitHub
本項で紹介するEclipseプラグインのEGitは、第5回で紹介したように、Pleiades All in Oneにあらかじめ含まれています。そのため、すぐに使い始めることができますが、その前に、そもそもGitとは何かを知っておく必要があります。そこから話を始めていきましょう。もっとも、Gitの解説だけで1冊の書籍が作れるぐらいの内容です。そのため、ここでは簡単な解説にとどめることをご了承ください。
ソースコードの履歴管理を行うバージョン管理システム
Gitは、バージョン管理システムの1つです。バージョン管理システムとは、ファイルの更新履歴を管理するシステムで、ソースコードファイルの管理には、ほぼ必須のツールといえます。
バージョン管理システムでは、履歴管理対象のファイル類をまとめておく場所をリポジトリといいます。そして、そのファイル類を更新した場合、バージョン管理システムは、ファイル中のどこの部分を誰が更新したかを記録します。ユーザは、ファイルを更新したことをバージョン管理システムに伝えるだけでよいようになっています(図1)。
集中型バージョン管理システム
このバージョン管理システムは、歴史的には、Gitとは違う仕組みである、集中型バージョン管理システムという仕組みが先に開発されています。集中型バージョン管理システムは、リポジトリをネット上のどこか1カ所に用意し、個々のユーザはそのリポジトリからファイル類をまとめて自分のPCにコピーして作業する仕組みとなっています。
このコピーすることをチェックアウト、コピーしてきたファイル類を作業コピーといいます。チェックアウトしたファイルに変更を加え、それをリポジトリに反映させることをコミットと呼びます。また、他の人がコミットした内容を自分の作業コピーに反映させることをアップデートといいます(図2)。
分散型バージョン管理システム
集中型バージョン管理システムは、ネット上にリポジトリがあることから、オフラインでは使えない、障害に弱い、柔軟性に欠けるなどの欠点があり、それらを改善させるために考えだされたのが分散型バージョン管理システムです。そして、その分散型バージョン管理システムのデファクトスタンダードとなっているのが、Gitです。
分散型バージョン管理システムが、集中型バージョン管理システムと決定的に違うところは、自分のPCにコピーするものが作業用のファイル一式ではなく、リポジトリそのものであることです。そのため、コピー元のリポジトリを中央リポジトリ、あるいはリモートリポジトリ、コピーしてきたリポジトリをローカルリポジトリといい、リポジトリのコピーをクローンといいます(図3)。
個々のユーザは、ローカルリポジトリのファイルそのものを編集し、ローカルリポジトリにコミットします。コミット先リポジトリが手元のPCにあるため、オフラインでもコミットができます。また、あくまでローカルリポジトリへのコミットのため、このコミット内容を他のユーザに知られることはありません。間違った内容をコミットしてもよく、その間違ったコミットを取り消して無かったことにもできます。
一通り作業が終了し、他のユーザとその内容を共有する必要が出てきた際に、まとめてリモートリポジトリに反映させます。これを、プッシュといいます。逆に、リモートリポジトリの最新状態を、ローカルリポジトリに反映させることをプルといいます。
GitホスティングサービスとしてのGitHub
Git自体はオープンソースなので、ダウンロードしてどこかのサーバにインストールすれば利用できます。しかし、ローカルリポジトリならいざ知らず、リモートリポジトリそのものの管理というのは、さまざまなコストがかかってきます。そこで、そのリモートリポジトリをホスティングし、サービスとして利用できるようにしたのがGitホスティングサービスです。
これらのGitホスティングサービスは、単にリモートリポジトリを提供するだけではなく、Webインターフェースや、タスクやバグを管理するチケットサービスなど、さまざまな付加価値をつけていることがほとんどです。
そのようなGitホスティングサービスのうち、デファクトスタンダードとなっているのが、GitHubです。本記事でも、このGitHubをリモートリポジトリとし、EclipseのEGitプラグインを利用しながらGitの使い方を紹介します。
これからの手順
概論はここまでにして、次節から実際にEGitとGitHubを使ってEclipseのプロジェクトを管理する方法を紹介します。その際、次の手順で行います。
- Eclipseでプロジェクトを作成する
- プロジェクトをGitのローカルリポジトリ化する
- GitHubのリポジトリを作成する
- ローカルリポジトリをGitHubのリポジトリにプッシュする