エンジニア必須の知識! GitとGitHubの違いとは?
2017年1月 5日
最近よく耳にする「Git(ギット)」と「GitHub(ギットハブ)」ですが、この2つは同じものではありません。具体的にはどう違うのでしょうか?
GitとGitHubの違い
結論からお伝えしますと、「Gitを使ってエンジニアを支援するWebサービスがGitHub」です。そのため、まずはGitが何かについてからご紹介をしたいと思います。
Gitとは
Gitは、プログラムソースの変更や更新を管理するための「分散型バージョン管理システム」の一つです。もとはLinuxの開発チームが使っていたツールで、今では世界中の開発現場で使われています。
Gitの登場以前のバージョン管理システムでは、サーバー上の1つのリポジトリ(ファイルやディレクトリの状態を記録しておく場所のこと)を、利用者が共同で使い、プログラムの変更や更新を管理していました。そのため、複数利用者がいると、二人以上で同時に編集してしまい、変更内容が衝突するケースがあるなどのデメリットがありました。
Gitは、自分のパソコンなどのローカル環境に、サーバー上にあるリポジトリの複製が作成されます。以下、サーバー上にあるリポジトリをリモートリポジトリ(共有リポジトリ)、ローカル環境に複製されたリポジトリをローカルリポジトリと呼びます。ローカルリポジトリにはすべての変更履歴がコピーされるので、ローカル環境のままで、サーバーに接続しているのと同様に作業することができます。
編集が済んだファイルをリモートリポジトリにアップロードしようとした場合、他人が編集した最新ファイルがある場合は、警告が出ます。そのため、他人の編集内容をうっかり上書きしてしまう事故は起こらなくなります。
サーバーに常に接続していなくとも作業できる利便性と、更新時の安全性、高速さなどが評価され、Gitは現在、バージョン管理システムの主流となっています。
Githubとは
GitHubは、GitHub社という企業によって運営され、個人や法人を問わず利用できるWebサービスです。Gitをより使いやすくする、というのがサービスの目的だったようです。
無料で利用することもできますが、その場合、リポジトリの内容はすべて公開されてしまいます。
リポジトリの内容を非公開にしたい場合は、有料プランに申し込む必要があります。
GitHubはGitを利用したWebサービスとして有名ですが、Gitを利用したサービスには他に「Bitbucket」や「GitLab」などがあります。
Gitによるバーション管理の基本
ワークツリー
ローカル環境内のGitの管理下に置かれた、ユーザー一人ひとりが実際に作業するディレクトリのことをワークツリーと呼びます。
コミット
コミットとは、ワークツリーで作成・編集したファイルをローカルリポジトリに保存することです。プログラムやコードのファイルを作成・修正し、ある程度のまとまりになったら、コミットしてそれまでの作業内容を一旦保存します。
コミットを実行すると、ローカルリポジトリの中に、前回コミットした時の状態と、今回コミットした時の状態の変更分を記録したコミット(またはリビジョン)というものが作成されます。 コミットは時系列順につながって格納されていきます。従って、このコミットをたどることによって、過去の変更履歴やその内容を知ることができます。
そのため、たとえば「新機能の追加」と「不具合対応」など、複数の異なる内容の変更を行う場合、まとめて一度にコミットするのではなく、「新機能の追加」と「不具合対応」にそれぞれ分けてコミットを行うと、後から履歴を探しやすくなります。
コミットの際はメッセージの入力を求められます。このメッセージは、他の人がコミットの内容を調べたり、自分で後から履歴を見直したりする際に重要なため、変更内容を具体的にわかりやすく書くよう心がけましょう。
インデックス
ワークツリーにあるファイルをローカルリポジトリにコミットするためには、インデックスという場所に、コミット予定のファイルを記録する必要があります。
この操作は、「ステージング」「コミット予定」「管理対象」と呼ばれます。 こうしてインデックスを挟むことで、ワークツリー内の不要なファイルを含めずにコミットしたり、ファイルの一部の変更だけをインデックスに記録してコミットすることが可能です。
ローカルリポジトリ
ローカルリポジトリには、(1)サーバーのリモートリポジトリからコピーして作成したもの、(2)全く新規に作成したもの、の二種類があります。
まとめ
ローカルリポジトリの変更内容を、リモートリポジトリに反映するためには、いくつかの段階と特殊な用語を覚える必要があります。 このため、慣れるまでは少し大変ですが、GitとGitHubを活用できれば、プログラミングのバージョン管理がぐっと、スムーズになります。是非、お仕事にもご活用ください。
関連講座
関連ブログ記事
- 「CSSでローディングアニメーションを作ろう!おすすめ参考サイト3選」written by ささくらはなび
- 「46,000種以上のUIのフリー素材が手に入る「UICloud」」written by ささくらはなび
- 「次世代のオープンソース活用セミナー ~人工知能(AI)・フィンテック(Fintech)の市場動向~ 開催レポート」written by ささくらはなび
- 「Git Hub入門編! まずはバージョン管理を使いこなそう!」written by 有滝貴広
本ブログは、日本初Web専門スクールのインターネット・アカデミーの講師が運営するWebメディアです。 スクールの情報はもちろん、最新のWebデザイン・プログラミング・Webマーケティングについて役立つ情報をご紹介しています。