最近流行りのコードバージョン管理システムがgitです。ポストsubversion的な見方もありますが、もっと気楽に一人で使っていいんじゃないかと思ってます。
subversionやcvsと比べてgitはシンプルに運用することができます。任意のディレクトリで
$ git init
とやると、カレントディレクトリに.gitというディレクトリができます。この.gitディレクトリがレポジトリそのものです。
レポジトリにファイルやフォルダを追加するのには、addコマンドを使います。
$ git add ファイル名
ファイルをレポジトリに格納するにはcommitコマンドを使います。
$ git commit
作業ディレクトリの状況を確認するにはstatusコマンドを使います。
$ git status
レポジトリからファイルを取り出す・復元するにはcheckoutコマンドを使います。
$ git checkout ファイル名
すごく素直ですよね。
ステージ
gitにはステージという単語があります。ステージというのは、<編集中>と<コミット済み>の中間に位置する状態であると言うことができます。複数のファイルを編集し、それぞれステージしてからまとめてコミット・・・というのがgitでの作業の流れになります。逆の見方をすると、コミットするべきファイルに印を付けるのがステージです。
編集したファイルをステージするには、addコマンドを使います。レポジトリへの追加と同じコマンドなのが不思議ですね。
$ git add ファイル名
ステージしたファイルを戻す(アンステージ)するには、reset HEAD --コマンドを使います。
$ git reset HEAD -- ファイル名
最後にはレポジトリへのコミットを忘れないようにしてくださいね。
$ git commit
add/reset HEADの組み合わせが非対称なのが気になってしまうので、僕はaliasを設定してます。
$ git config --global alias.stage add
$ git config --global alias.unstage 'reset HEAD --'
この設定を行うことで、以下のようなコマンドでステージ・アンステージを行うことができるようになります。
$ git stage ファイル名
$ git unstage ファイル名
$ git commit
ついでといっては何ですが、aliasコマンドでcheckoutのaliasも設定してあります。
$ git config --global alias.co checkout
タグ付け
gitの良いところは、タグ付けがしやすいところです。小さな機能実装を繰り返してソフトウェアの実装を進めていくことが良くあります。小さな機能実装(&デバグ)が完了した時点で気楽にタグ付けしてしまって良いのです。
gitのタグには、いくつかの種類がありますが、annotated tag(-a)が気楽で良いです。
$ git tag -a タグ名
タグに対するコメント入力を促されるので、コメントを入力してください。コメントは-mオプションで指定することができます。
-aを付けないとlightweight tagというものになります。lightweight tagではコメントの入力ができませんし、tagに関する付随情報が記録されませんので少し不便かもしれません。
$ git tag -a v1.0.3.2 -m '設定保存機能実装'
こんな感じで使ってます。タグの一覧は、単純にtag -lコマンドで指定できます。タグにつけたメッセージを表示するには、-nオプションで表示する行数を指定します。
$ git tag -l -n10
つけたタグへの移動はcheckoutコマンドで行います。
$ git checkout タグ名
これでタグへの移動が完了します。
gitの能力はもちろんこれだけではないですけれど、とりあえず「タグ付けがし易い」という特徴の恩恵を享受するだけでも、gitを使う価値はあると思います。
気が向いたらもう少し高度な使い方もblogに書いてみようかなと思ってます。