TECHNOLOGY 2013.04.02

Gitを使ったローカルでの差分管理のはじめ

  • System

こんにちは、4月から入社した新卒プログラマーの若井です。 去年の9月くらいからアルバイトとして参加させてもらいましたが、開発を進めていく上でプログラムファイルのローカルでの差分管理をするために、Gitを使ってやってみました。 今回はその、ローカルでの差分管理環境ができるまでの手順を紹介いたします。

ローカルに管理用のリポジトリを作成

※Gitはすでにインストール済であるとします。
まずは、リポジトリを作成します。
管理用リポジトリのパスは /git とします。
リポジトリのフォルダは.gitをつけるのが慣習のようなのでtest.gitにし管理用リポジトリのために--bareオプションで初期化をします。
管理用リポジトリなので.gitのみのフォルダ構成になります。
その時のコマンドが以下です。

cd /git
mkdir test.git
cd test.git
git init --bare

リポジトリのclone

次に、管理リポジトリからcloneしリポジトリの複製を作成します。
今回はapacheのdocument rootで行います。
↓↓こんな感じ。

cd /srv/http/
git clone /git/test.git

管理するリポジトリの初期化

リポジトリが出来たので、testフォルダに移動し、管理したいソースを追加します。 git add . コマンドで全てのファイルをgitの管理化に追加します。
git commit コマンドで現在のリポジトリに変更を知らせます。
-m オプションはshell上でコミットに対するメッセージを追加します。
git push origin master はcloneもとのサーバにmasterというブランチでアップロードします。
これで管理用リポジトリに変更が反映されます。

cd test
git add .
git commit -m "init"
git push origin master

ファイルの修正

リポジトリを初期化し、ファイルを追加しました。今度は追加したファイルを編集します。
Echoコマンドを使いindex.htmlファイルにhello worldを追加で書き込みをします。

echo hello wolrd >> index.html

リポジトリに登録

編集したファイルをリポジトリに登録します。
登録時に-a オプションを指定すると、削除や修正したファイルが再びステージング領域に追加されます。修正内容をダブルクォーテーションで囲って記入し、管理用リポジトリにアップロードします。

git commit -a -m "modify index.html"
git push

差分管理用にtagを追加

基本的にはこんな感じでローカルでの差分管理が可能となりますが、コミット数が多くなるとどこから差分をとるのかわからなくなるので 次のようにtagをつけて管理すると便利です。
最新のリビジョンにv0.0.1というtagをつけます。(『v0.0.1』の部分がtagの内容)

git tag -a v0.0.1 -m "hello wolrd"

タグの一覧を確認する時は

git tag

で確認できます。

指定の差分からアーカイブの作成

このようにコミット時にtagをつけていると、最新のソースから指定したtagまたはリビジョンを指定でその差分を取得できるようになります。

  • archive:アーカイブファイルを作るコマンド
  • --format:出力形式を指定
  • -o:出力ファイル名の指定

例えば次のコマンドを打つと、同じディレクトリにarchive.zipというファイル名で v0.0.1から最新のソースまでの差分が取得できます。

git archive --format=zip HEAD `git diff --name-only v0.0.1` -o archive.zip

まとめ

と言った感じで、ローカル環境でのGitを使った差分管理方法を紹介させてもらいました。
開発段階において、ソースの差分管理、バージョン管理は非常に重要な要因となります。
みなさんもいろんなツールを使って有効な差分管理を試してみてください!