初めに
GitとGitHub、名前はよく聞きますが、私はまだ業務で扱ったことがありません。
「ソースのバージョン管理ができるらしい」という噂だけ耳にしています。
この機会に、知識だけでも頭に入れ、面談等でも「実務経験はありませんが、どういうものかは理解しております」とそれっぽく言えるようにまとめてみたいと思います。
めちゃくちゃ初歩知識であるかとは思いますが、お付き合いください。
GitとGitHub
Gitは
プログラムなどを記述したソースファイルを管理するための「バージョン管理システム」のことを言います。
Gitでは、自分のローカル環境のローカルリポジトリに変更を記録し、適当なタイミングでリモートリポジトリ(サーバー上のリポジトリ)に変更履歴をアップします。
これにより、ネットワークが繋がらない環境でもバージョン管理ができ、全体の整合性を保ちやすくなるとのことです。
言わずもがな、ですが、Gitが出来ることは、
- ソースの変更履歴の管理
- ソースを過去バージョンの状態に戻せる
- 複数人やチームで作業を共有できる
などが挙げられます。
対してGitHubは、
「Gitを利用した、開発者を支援するWebサービス」の名前です。
Gitのリポジトリを「Web上のGUI操作でグラフィカルに扱うことが可能」なツールです。
(リポジトリ、についてはここでは割愛します)
ドキュメントの管理も行えるそうです。
Gitはツールの名前で、GitHubはWebサービスの名前。この2つの関係は「メールとGmail」の関係に似ている、と例える解説を見かけましたが、ストンと理解できました。
Gitをより使いやすくするツール、というイメージで良いのかなと思います。
少し詳しい話
ソースコード管理ツールを使用すると、ローカル環境で編集したファイルをサーバー上のファイルに反映させる、という手順・処理が生じます。
ソースコード管理には集中型と分散型があります。
集中型はリポジトリが一つですが、分散型はリポジトリが複数(リモートとローカル)あります。
ソースコード管理ツールのSVNが集中型なのに対し、Gitは分散型です。
(最近は分散型が主流となってきているようです)
集中型のリポジトリは一つしかないため、同じファイルに対して編集した複数人の変更履歴がぶつかると、競合が発生してしまいます。
しかし、分散型であるGitの場合、サーバー上のリモートリポジトリから変更履歴がコピーされ、ローカル環境のままで、サーバーに接続しているのと同様に作業することができるそうです。
誰かが編集した最新ファイルがある場合、警告が表示され、編集内容をうっかり上書きしてしまうという事故を避けられます。
終わりに
GitとGitHubについて、違いとそれぞれが出来ることをほんの入り口だけですがまとめてみました。
ソース管理ツールは大体の現場で使うものかと思いますので、実際に使ったことがなくてもあまり深刻になることはないかと思います。
個人的にはVSSとSVNしか実務経験がないのですが、いざ使ってみればコツも掴めてくるんじゃないかなと考えています。
ローカルリポジトリの内容をリモートリポジトリに反映する際は、いくつかの手順があるようなので、実際に使う際はよく確認し、周囲にも聞きながら対応したいと思います。
また、GitとGitHubに関して、よく使う用語は覚えておくようにしたいと思います。