git-svnオレオレメモ
インストール
Mac Portsでgitをインストールした場合、git-svnはインストールされていない。
と言うことで、追加インストールする必要がある。
% sudo port install git-core +svn
上記のサイトをみると、すでにgit-coreがインストールされている場合は、git-coreをdeactivateする必要があるらしいが、なぜかボクの場合はOKだった。
Gitの使い方
オレオレメモなので、オレが使う分だけ。
一つ前のCommitをやり直す。
Commitするファイルを忘れたり、もしくは、多くCommitしすぎた時とかに修正する。
例. 一つ前にCommitしたときにCommitするファイルを忘れた場合
% git add hoge.c hoge.h
% git commit -m "hogeの追加" # あ、Makefileの修正をCommitするのを忘れた。
% git add Makefile
% git commit --amend -m "hoge, Makefileの追加"
その他
いきなりその他w
ま、普段使うコマンド(status, move, rm, etc.)などはSVNとほぼ同じ。
.gitignore
バージョン管理下に置かないようなファイル(典型的には、Cのオブジェクトファイルなど)は、そのファイルが存在しているディレクトリ以下に.gitignoreを置けばいい。
SVNリポジトリへのコミット
Gitでローカルリポジトリにばんばんコミットした後に、適切なタイミングでSVNにもコミットする。
% git svn dcommit
このコマンドを打つと、ローカルにコミットしたリビジョンが全てSVNにコミットされる(SVNのリビジョンが一気にGitのコミット数分上がる)。
ログメッセージも反映される。
正直、複数人でやる場合は、注意が必要そう。
Redmineとの連動
試してないけど、git svn dcommitしたときに、gitに対してコミットしたものが一気にSVNにコミットされるので、git commitするときに、Redmineのチケット番号を付けておけば、おそらく連動される。
雑感
Gitでローカルリポジトリを置いておくと、バグトラックがとにかくしやすい。
今の仕事スタイルとして、職場と家でコーディング比率が1:2ぐらいになっていたので、SVNの中央管理だけでは、変更が大きくなりすぎて、SVNで管理するのに適さない。かといって、プロジェクト全体がSVNで走り始めているので、Gitにすることもできない。
そのような場合に、git-svnはちょうどいいソリューションを与えてくれる。
また、gitkが非常に使いやすいため*1、これだけでもGitに移してよかったなぁ、と思える。
*1:なぜかgit diffが暴走する、と言うのがあったけど