インターネット・アカデミー オフィシャルブログ
About

エンジニア必須の知識! GitとGitHubの違いとは?

2017年1月 5日

エンジニア必須の知識! GitとGitHubの違いとは?

最近よく耳にする「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を活用できれば、プログラミングのバージョン管理がぐっと、スムーズになります。是非、お仕事にもご活用ください。

関連講座

関連ブログ記事

本ブログは、日本初Web専門スクールのインターネット・アカデミーの講師が運営するWebメディアです。 スクールの情報はもちろん、最新のWebデザイン・プログラミング・Webマーケティングについて役立つ情報をご紹介しています。

  • このエントリーをはてなブックマークに追加

現在、マサチューセッツ工科大学のW3C本部に在籍し、HTML開発とインターネット・アカデミーのカリキュラム開発を担当する。

海外支店責任者として、アメリカとインド、日本を行き来する。5年間、マサチューセッツ工科大学のW3C本部に在籍し、HTML開発と普及活動を行ってきた経歴を持つ。

日本の新宿校、渋谷校インストラクター。主にWebマー ケティングとクリエイティブ系の授業を担当。

バンガロール校インストラクター。デジタルマーケティング が専門分野。

Google認定Webマーケティング講座の企画・開発に携わる。「PHPカンファレンス2011」で講演。「PHP公式資格教科書」の執筆など

バンガロール校支店長。Webプロデューサー、インストラクター、エリアマネージャを経て、現在はグローバル展開のビジネスディベロップメントを担当。

「W3C"HTML5 Tour"」での講演や、インド校にてWebデザイナーおよびチーフインストラクターを勤めた経歴を持つ、人気キャリアプロデューサー。

フランスにあるW3CのEUホスト、ERCIM(欧州情報処理数学研究コンソーシアム)に常駐し、Webの研究を行うインド人インストラクター。Webマーケティングに精通している。

テーマテーマ

最新の記事最新の記事

スタッフ別ブログスタッフ別ブログ