« 2009年4月 | メイン | 2009年6月 »

2009年5月12日

gitの第一歩: working tree, index(staging area), repository(commited)

gitをつかいはじめてみたけど、どうもわたしは基本的な概念が分かっていないぽいので、本を探してみました。見つけたのは2冊。

Git Internals

Git Internalsは$9のPDF本。大変安い。Internalsというだけあって、仕組みを解き明かす本のようです。

Pragmatic Version Control using Git

Pragmatic Version Control using Gitは、名前から推測つくように、The Pragmatic Bookshelfから出ている本。電子版$22, 書籍版$34.95 + 送料, 電子+書籍$43.75。

まずはPragmatic Version Control using Gitの電子版を買って、読み始めています。iPhoneでも読めるので通勤の友です。前回疑問に思ったレポジトリをworkingの関係はすぐにすっきりしました。

Gitには3種類のエリアがあります: working tree (ここで実ファイルを編集), repository(コミットされたファイルの各バージョンが入っているデータベース), index(or staging area)(これからコミットされるファイルが一時的に入っている場所)。このindexの存在意義がいまのところ私には分かっていませんが、indexとかstating areaとかcachedとかいわれるものが、レポジトリとworkの間にはさまっていることを理解しておくのがGitをちゃんと理解してつかう第一歩なように思います。

その他にもGitはいろいろ特徴的なようです。本質的に「内容の」変更がtrackされること(ファイルではなく!)、branchが本質的でその処理も非常に軽いこと(だからbranchを使いまくる、従来のVCSからみると「過激な」使い方も気楽にできる)、VCSというよりは履歴つきファイルシステムのようなものであること、等々。

2009年5月 4日

gitを使ってみる

Factor言語はものすごいペースで新しいバイナリが出ます。差分のリリースノートとかないので、何がかわったのかよく分かりません。そして突然emacsのfactor mode動作が不審なことになったりします。

ソース管理システムで差分みればいいのかなー、と思って、Factorで使われているgitを自分の環境にいれてみることにしました。

どこから持ってくる?

自分でビルドしてもよいのですが、OS X用のパッケージがあるのでそれをありがたく使わせていただきます。gitは/usr/local/git以下にインストールされます。

Factorのgit repositoryをコピーする

レポジトリ用の場所を作って、次のコマンドでいけます。簡単。

git clone git://factorcode.org/git/factor.git

見るだけ?

Factorのgitレポジトリは当面見るだけ、ですが、他に今svnで管理している個人的なものもgitに移行しようかな。

基本的な使い方

subversionのように、どこかにレポジトリがあって、その一部がワークとしてコピーされている、というイメージではなさそう(たぶん)。レポジトリそのものの下にあるファイルが編集対象で、レポジトリのルートにある".git"ディレクトリ以下にデータベースがあります(たぶん)。

ということで、使い方はこんなかんじでしょうか。

まずレポジトリを用意する

既に存在するgitレポジトリならcloneする。そうでなければ、

cd <レポジトリにする場所>
git init
git add .
git commit

これで最初のバージョンがコミットされます。

日常的な操作

ファイルを編集します。編集したファイルをgit addで指定し、git commit。git commit -aで、変更されたファイルを検出してコミット。この場合、新規作成されたファイルは対象にならない。

疑問点

「リポジトリ」と「ワーク」の関係。特に、「リポジトリ」の場所。上に「たぶん」と書いたことが、間違っているようにも思うが今は理解できていない。