今回はgitやgithubについてその仕組みを説明したいと思います。超初心者向けです。
githubぐらい知ってるよって人は飛ばして下さい。
スポンサーリンク
gitとは?
gitとはファイルのバージョン管理をする為のシステムです。
ファイルを更新する度にコピーを取ってファイル名やフォルダ名に更新日でもつけておけば、バージョン管理っぽいことが出来なくもないですが、結構面倒だと思います。
それをシステマチックにする為の仕組みを提供してくれるのがgitです。
スポンサーリンク
gitの仕組み
まずはgitの基本的な仕組みを簡単に理解しましょう。
リポジトリとコミット
gitの仕組みを理解するには、リポジトリとコミットの説明が欠かせません。
リポジトリというのは倉庫とか貯蔵庫みたいな意味の言葉だそうです。一般的に聞き慣れない言葉なのでイメージが沸きにくいと思うのですが、とりあえずファイルの容れ物だと思っていたらいいと思います。
まず、バージョン管理をしたいプロジェクトのファイル群が格納されているフォルダ(ディレクトリ)をリポジトリとして指定ます。
指定したいディレクトリに移動して、以下のコマンドを打つことで、そのディレクトリをリポジトリとして登録することが出来ます。
1 | $ git init |
git initコマンドでそのディレクトリと紐付いたリポジトリが作られます。が、まだ中身は空っぽです。
コミットという作業をすることで、そのリポジトリの中にそのディレクトリ下のファイル群を放り込むことが出来ます。
コミットする前に1つ下準備が必要になります。git addコマンドでコミットしたいファイルを選択します。全てのファイルを指定するには-Aオプションを付けて実行します。
1 | $ git add -A |
これでコミットの準備が整いました。続いてgit commitコマンドを打ちます。
1 | $ git commit |
コミットというのは簡単に言うと、addコマンドで選択していたファイル群をリポジトリに放り込むようなイメージです。
一回目のコミットは言わばバージョン0.0です。ここからバージョン管理スタートです。
二回目以降のコミットで、このリポジトリ内のファイル群を更新していきます。普通にエディタでファイルを書き換えてもコミットしない限りはリポジトリ内のファイル群は書き換えられません。
プログラムファイルをなんやかんや書き換えて、納得のいく状態になったらコミットするわけです。コミットする際に何を更新したのか簡単なメッセージを添付することで各々の更新内容を把握することができます。
1 | $ git commit -m "○○機能のバグを修正" |
要するにリポジトリというのはそのディレクトリのバックアップみたいなものです。しかもただのバックアップではなく、コミットされる都度、どこがどう書き換えられたかというファイル群の内容を記憶しており、いつでも過去の状態に戻すことが可能です。
そういう意味では、リポジトリの中身は一本の線に例えると分かりやすいと思います。
各コミットが境目のような役割を果たしているのがイメージできると思います。
具体的なやり方については次回、Cloud9で作ったphone-bookを使って説明します。ここではとりあえずgitにおける最も基本的な概念であるコミットについてなんとなく掴んでください。
githubとは?
githubというのは、リポジトリをクラウドで管理する為のwebサービスです。リポジトリをサーバー上に置くことで、それを他の人と共有したり、バックアップとして使ったりできます。
またgithubにはソースコードを他の人と共有しながら更新する為の便利な仕組みがいろいろ実装されています。
リモートリポジトリとgithub
あるPC内で作成したリポジトリは言わばローカルリポジトリです。もちろん普通はそのPC内からしかアクセスできません。
リポジトリをサーバー上に置けば、それを複数台のPCからリアルタイムに共有することができます。そのようなサーバー上にあるリポジトリをリモートリポジトリと言います。
ただし、リモートリポジトリ = githubというわけではありません。
上記のgitの説明ではあえてしていませんが、gitとはそもそも分散型のバージョン管理システムであって、1台のPC内で使う為に作られたものではありません(もちろん別に一人で使っても問題ないですが)。
つまり、githubというwebサービスがまだ無かった頃から、リポジトリをサーバー上に置き、それを複数台のPCで共有しながらプロジェクトを作り上げるという使い方がされていたわけです。
ただしその場合、リモートリポジトリの為のサーバースペースを自分で用意したり管理したりといったコストがどうしてもかかってしまいます。
そこで、githubの誕生です。githubはアカウントさえ作れば誰でも簡単にサーバー上にリモートリポジトリを作れるというサービスを提供しました。
しかも、githubは単なるサーバースペース(ファイル置き場)ではなく、ブラウザ上でファイルの中身や変更内容を確認したり、操作したりすることが出来るようになっています。
github以外にもリモートリポジトリを管理する為のwebサービスはいくつかありますが、今のところgithubが最も一般的に利用されています。
次回はCloud9の開発環境とgithubを連携させる方法を具体的に説明します。