これまで、Gitはmasterだけにコミットを続けるようなヘタレた使い方しかできなかったんだけど、git-svnを触りながら、ちゃんと概念から学んで使い始めた。
参考にしたのは以下のページ
Gitでの、ブランチを使った開発の良いところは、何と言ってもブランチ間の切り替えが早いこと!
Subversionでもsvn switchコマンドがあるけど、リビジョン番号が大きくなってくるとスイッチだけでやたら待たされるので、結局リポジトリルートからtrunkもbranchも全てワーキングコピーとして持って来て、マージの時もそれぞれのディレクトリを触っていた。
git checkoutは、一瞬でブランチが切り替わるから、サクサクと気分良くマージできる。
最初、git svn cloneして作成されたmasterブランチがtrunkを見ていなくて、それ自体は
$ git reset --hard remotes/trunk
で解消できるのだけど、この“おまじない”は何ぞや? と立ち止まってしまった。
このresetの意味は、WEB+DB PRESSのGit特集を読めば、「masterブランチのHEADが指す位置を、Gitから見たtrunkブランチのところまで戻したんだな」って、ちゃんと理解できた。
書籍の中だと「歴史を書き換える」と表現されていて、まさにぴったりだと思った。
このGit特集は解説がとても丁寧で、凄く参考になる。
git-svnについて書かれている記事ではないけれど、git-svnを使って行く上で必須となるGitの概念がコンパクトに詰まっている。
買っておいて良かった。
他にも、WEB+DB PRESSの特集記事(特に、5章〜6章のグループ開発)を読むと、Subversionで「これができれば良いのに」と思っているところがことごとく解決出来てしまって夢が広がりんぐだった。
けど、例えば“コミット”の概念一つとっても、リビジョン番号を育てて行くスタイルの、他のバージョン管理システムとは考え方が違いすぎて、同じチームの人に「Gitに全面移行しましょう!」と学習を強いるのは大変かもしれないなぁと思った。そう言えば、前にUssy君から似たようなツッコミを受けたことがあった。
僕もまだ、学習コストの高さについていけてなくて、インデックスを経てリポジトリに記録されるところも、ようやく頭に入ってきたんだけど、結局いつもsvn commitと同じ感覚で、git commit -aしてしまうのだった・・・。もうちょっとうまく使いこなせるようになりたい。
最近のツッコミ
参号館 日記(ariyasacca)