「SVN脳患者から見たGit」
私も CVS や Subversion の時期が長かったので,すんげぇよく分かる。
Git (Mercurial のことも思い出してあげてください) は VCS (Version Control System) のひとつと分類されているが,実はバージョンなんか管理していない。
管理してるのは「変更」である。
これが「Gitにおけるコミットはチェンジセットである」の意味である。
バージョンを管理するというのはつまり「(ユーザへの)リリースを管理する」ということで,途中の作業履歴を記録していくことにほとんど意味がなくなる。
たとえば「動かないコードをコミットしない」とかいったローカルルールも「バージョン」を管理する VCS の特徴と言える。
これが「変更」を管理する VCS なら何をコミットするかはブランチごとに柔軟に決められる。
ローカルリポジトリの一時ブランチなら自分の都合で好きなようにコミットすればいいしコミットのやり直しも自由だ。
作業の途中で間違いに気づいたらコミットを遡って更にブランチを切ってもいい。
だからいったん Git に慣れてしまうと Subversion なんかまどろっこしくて使う気にならなくなる。
いわんや CVS をや,である。
(いやぁ。昨年のあのプロジェクトはマジでしんどかった。いまどき CVS を使ったコード管理なんか緊張を強いられるだけで何のメリットもないよ)