Git入門 その2 -とりあえず使ってみる-

前回は、Gitの導入のみ行ったわけで、まだGitの素晴らしさを実感していません。
※前回記事 導入編はこちら(http://d.hatena.ne.jp/kuro_m88/20110112/1294838022)
やっぱり使ってみないと何もわかりませんよね。
ということで、とりあえず使ってみましょう!


最初に、管理する対象のソースコードファイルを作成しましょう。
適当なディレクトリに"hello.c"というファイルを作り、内容は以下のようにしてください。

#include <stdio.h>

void main()
{
  printf("Hello World!\n");
}

Gitを使うには、Linuxを使っている人は端末からgitコマンドを使用するだけなので端末を起動するだけで準備完了です。
WindowsでmsysGitを使っている人もコマンドプロンプトから同様に操作するのですが、そのままではgitコマンドが使えないので、最初に"git-bash"とコマンドを入力し、gitを使用するための簡易シェルを起動します。
この後はWindowsもLinuxも操作方法はいっしょです。とりあえずこんな感じでコマンドを入力してみましょう。

 $ cd 
 $ git init
 $ git add hello.c
 $ git commit -a -m "First commit of hello"

これは何をしたのかおおまかに説明すると、2行目の"git init"でhello.cがあるディレクトリでバージョン管理ができるよう、初期化を行いました。
3行目でgitで管理するファイルにhello.cを加えました。
4行目で3行目で行った変更を確定(=コミット)しました。-mオプションで"Inital commit of hello"というコメントもつけておきました。
次に、hello.cを以下のように変更してください。一行追加しただけですね。

#include <stdio.h>

void main()
{
  printf("Hello World!\n");
  printf("Git is very useful tool!\n");
}

変更したら、次のようにコマンドを入力します。

 $ git commit -a -m "Second commit of hello"

これで、hello.cに対しての変更が確定され、新しいバージョンが作られました。
こんな感じで、何か機能を追加したら、
git commit -a -m "コメント"
という書式でバージョンを増やしていきます。
変更の履歴を見てみましょう。

 $ git log

とコマンドを打ってください。
こんな感じで表示されるはずです。

 $ git log
commit 94b9a9209af8b33234f95fa883966e1d3f6d6b6b
Author: kuro 
Date:   Sat Jan 15 23:35:02 2011 +0900

    Second commit of hello

commit 99fd5c927b47b23100073169dbfada70804e00ec
Author: Kuro 
Date:   Sat Jan 15 23:33:21 2011 +0900

    First commit of hello

表示された内容の意味はだいたい分かるでしょうか?
commitの右に書かれた英数字の羅列は、そのバージョン固有のハッシュ値です。
Authorの右に書いてあるのが、コミットした人の名前です。
Dateはコミットした日付ですね。
その下に一行空いて、コメントが記載されています。
次に、最初のコミットとその次のコミットで何を変更したのか見てみたいと思います。
以下のような感じでコマンドを入力してください。

 $ git diff <2回目のコミットのハッシュ値> <1回目のコミットのハッシュ値>

具体的に書くと、今回の場合は先ほどのgit logの出力を参考にして、

$ git diff 99fd5c927b47b23100073169dbfada70804e00ec 94b9a9209af8b33234f95fa883966e1d3f6d6b6b

となります。
すると、こんな感じで表示されるはずです。

$ git diff 99fd5c927b47b23100073169dbfada70804e00ec 94b9a9209af8b33234f95fa883966e1d3f6d6b6b
diff --git a/hello.c b/hello.c
index 7962a04..6c027eb 100644
--- a/hello.c
+++ b/hello.c
@@ -3,4 +3,5 @@
 void main()
 {
        printf("Hello World!");
+       printf("Git is very useful tool!");
 }

これは1回目のコミットと2回目のコミットの差分ですね。左はじに"+"と付いている行があとから付け足された行です。バージョンが増えていって、何を変更したか分からなくなっても、
git diff <ハッシュ値> <ハッシュ値>
のように比較したいバージョンとバージョンのハッシュ値が分かれば、diffの形式で変更内容を示してくれるので、大変便利です。


今日はここまでにしておきましょうか。
初めてこの一連の操作を見た人は、「なんだか面倒くさそうだなぁ」と感じるかもしれませんが、最初に初期化とファイルの登録のみ行えば、あとは、コマンド一つで自動でバージョンを管理してくれるので、慣れてしまえば大変便利です。
ここまでやった内容は

  • Gitの導入(前回)
  • Gitの初期化
  • ソースファイルの登録
  • コミット
  • ログの表示
  • 差分の取り方

です。これだけでも十分便利なのですが、Gitにはまだまだ便利な機能が沢山あります。
ということで、次回は、バージョンを戻したり、コミットを修正したり、取消したりという機能の紹介をしたいと思います。
バージョン管理をしていれば、やりたいことを試すだけ試してみて、駄目だったらバージョンを戻せばよいのですから、心強いですね〜(笑)