git によるバージョン管理の練習

git によるバージョン管理の練習

シーブレインではソースコードなどのリソース管理に Subversion を使用しています。(バシャログの Subversion の検索結果)文字コードのトラブルも皆無で、 GUI のクライアントの TortoiseSVN の品質もよく、日々の業務に役立っています。

...という日頃の業務とは別のところで、別のバージョン管理システムも気になったりします。Mercurial, git, bazaar などなど。twitter などで話題を追っかけておりますと、 github.com というサイトが話題になっていたりします。(半年前くらいに...)そこで、今回は github.com 、ではなく、まずは git の使い方を調べたので、基本的な使い方についてまとめてご紹介します。Subversionを使用したことがあって、練習していただくとわかりやすいと思います。

git とは

プログラムのソースコードの変更履歴を管理できる、バージョン管理システムの1つです。Linux カーネルの開発で使われていることで知られています。

インストール

git でなにができるのか、具体的な手順を追って、確かめていきます。まず、git のインストールです。ここでは実際にインストールしてみた Windows/Debian/Mac OS X について取り上げます

Windows - msysGit インストーラで一括インストール
Windows 用のインストーラが提供されています。
Debian GNU/Linux - apt-get で
シェルで「sudo apt-get install git-core」とコマンドを実行します
Mac OS X - MacPorts でインストールする方法
MacPorts をインストールしていれば、シェルで「sudo port install git-core」でインストールできます。MacPorts 自体の解説は、MacPorts でステキなUNIXツールをインストール - はこべにっき#が大変参考になります。MacPorts をインストールしていない場合は多少の時間が必要になります。

最初の成果物を作る

さて、git で管理を始める前にコミットすべきファイルを作ります。完全な説明をするためにシェルを利用しますが、ここはGUIのエディタで作業しても問題ありません。以下の手順で試します。(Windows の場合は、スタートメニュー→全てのプログラム→ git → Git Bash を起動します)

  1. ディレクトリとファイルを作る
  2. リポジトリを作る
  3. コミットする
  4. 修正を加えてまたコミットする

ディレクトリとファイルを作る


~$ cd ~
~$ mkdir -p git/test # この test フォルダをあとで管理することになります
~$ cd git/test
~/git/test$ vim index.php               # ファイルを編集する
~/git/test$ cat index.php 
<?php
echo "こんにちは、git。今日は"  . date("Y-m-d") ."\n";
?>
~/git/test$ php -a index.php 
Interactive mode enabled

こんにちは、git。今日は2008-10-03
~/git/test$ vim README               # 説明書を添える
~/git/test$ cat README 
index.php はあいさつプログラムです。
~/git/test$ ls
README  index.php

ここまでで何をしたのでしょうか。

  1. まず、プロジェクトの作業用フォルダを作りました。
  2. スクリプトを作成し、動作確認を行いました。
  3. スクリプトだけだと後々不安だな、と感じ、説明書を追加しました。

リポジトリを作る

適当なファイルができたのでリポジトリをつくります。現在のディレクトリで「git init」と実行してください。git の作業はプロンプトで行います。


~/git/test$ git init
Initialized empty Git repository in /home/tanaka/git/test/.git/

これでまっさらなリポジトリができました。リポジトリは現在の作業場所にできるんですね。( .git/ )

コミットする(リポジトリに成果物を送る)


~/git/test$ git add index.php README

git add はリポジトリで管理する対象を追加します。


~/git/test$ git commit -m 'first commit'             #ログメッセージ
Created initial commit 0daf2b7: first commit
 2 files changed, 4 insertions(+), 0 deletions(-)
 create mode 100644 README
 create mode 100644 index.php

コミットしました。ログをみてみます。


~/git/test$ git log
commit 0daf2b76a88ca753bcd27859a8105b7198fe6e43
Author: tanaka <tanaka@debian.lenny>
Date:   Fri Oct 3 18:30:53 2008 +0900

    first commit

修正を加えてまたコミットする

ちょっと修正して2回目のコミットをします。


~/git/test$ vim index.php
~/git/test$ cat index.php 
<?php
echo "こんにちは、git。今日は"  . date("Y-m-d") ."\n";
echo "Hello, git.\n";
?>
~/git/test$ git add index.php
~/git/test$ git commit -m 'second commit'
Created commit e9e9fd0: second commit
 1 files changed, 1 insertions(+), 0 deletions(-)

ここで注意なのが、一度コミットした index.php をまた add してからコミットしたことです。ここで add したファイルだけが commit を実行したときに、実際にコミットされます。

git commit -a -m '....' という風に実行して楽することもできます。

まとめ

git のインストールから小さな練習用のプロジェクトの作成までを見てきました。Subversion と大きく違うのは、リポジトリがそばにあるということです。このために日常の作業に違いがあります。(コミット前の変更を元にもどすには、revert ではなく checkout でできる、など)

git を使うと、Subversion もそうですが、変更の追跡ができます。要所で git diff, git status, git log などのコマンドを使うと、変更を確認しながら作業することができます。

参考文献

はじめてのgit | IDEA*IDEA
こちらの練習手順が、非常に参考になりました。
  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ