CVS/SVNとGitを比較して理解してみよう

スポンサーリンク
IT
スポンサーリンク

CVS/SVNとGitを比較して理解してみよう

前回の記事はいかがでしたでしょうか。とりあえず、この辺までわかれば、一旦最新の資材が手元で確認できる状態になると思います。

前回の記事はこちら。

Gitから入った方は、特に違和感なく、このまま知識を深めて行ってもらえば良いと思います。

さて、CVS/SVNからの方は、もやもやが残っていると思います。私がCVSからGitに挑戦した時に感じた戸惑いポイントについて、いくつか紹介したいと思います。

比べてみる

なかなか両方を並べている説明がなくて苦労したので、ちょっと作ってみました。

  1. サーバで集中管理(リポジトリ)している場所から資材一式をローカルに落としてくる最初の作業です。CVS/SVNでは「チェックアウトGitでは「クローンに該当します。
  2. 一度リポジトリとローカルのファイルを同期した後は、変更差分のみを取り出すことが可能です。CVS/SVNでは「チームを指定して更新Gitでは「プルに該当します。
  3. ローカルで編集した資材をリポジトリに登録することが可能です。CVS/SVNとGitどちらも「コミットに該当します。

コミットの部分は同じですが、Gitの場合はコミットの前後に1ステップずつあるところがわかりにくいポイントです。
Gitの場合は、③の資材をリポジトリに登録する流れが3つに分かれます。

  1. ステージングエリアに追加
  2. ローカルリポジトリにコミット
  3. リモートリポジトリにプッシュ

Sourcetreeの場合、2と3を同時に行うこともできます。

ローカルにもコミットできるリポジトリがある

CVS/SVNは中央集中管理型バージョン管理システムです。資材一式をサーバ側のリポジトリで一元管理するため、直接サーバのリポジトリにコミットします。

対してGitは分散型バージョン管理システムです。ローカルにもコミットできるリポジトリがある点が異なり、ここのイメージが沸かないとコミットしたけど、プッシュし忘れて、周りから資材あがってないよーと言われてしまいますので要注意です。

ブランチの取り扱いは一緒!?

ブランチという名前と意味は同じですが、ブランチを切るタイミングがCVS/SVNとGitでは異なるため、ここがもやもやポイントです。

CVS/SVNでブランチを作成する時は、暖簾分けなどで大きな支流ができる場合に限るので、なかなかレアなイベントなのですが、Gitだとちょっとした修正の度にホイホイとブランチを切って、完了したらマージします。

ばったん
ばったん

まだ私がGitを知らなかった頃、Git上がりのライブラリアンにCVSの管理を任せたら、ブランチを切れらまくって、こんな猛者がいるのかと驚愕したことがありますが、Gitを知るとあー、なるほど、という感じです。

origin、master、developって何さ

この辺はGit固有ですので、こういうものなんだ、と認識すればOKです。

  • origin:リモートリポジトリのこと
  • master:ベースのブランチ
  • develop:主に開発時の主流となるブランチ

CVS/SVNのリポジトリの最新資材は、Gitのmasterブランチに該当します。但し、Gitの場合は開発中などはdevelopブランチが最新だったりします。この辺はブランチの運用ルールによって異なります。

ここまで読むとライブラリアンの方はピンとくると思いますが、ブランチをみんなが自由に作ったらめちゃくちゃになるぞ・・・

はい、そのとおりです。そのため、Gitを運用していく上では、一定のルールを決めてブランチを作成するのが一般的です。主によく採用されているのは、git-flowモデルです。

他にもいくつかブランチモデルがありますので、適切なものを使うようにしましょう。

.cvsignoreみたいなものある?

.gitignoreがあります。書き方はこんな感じです。

# 拡張子 bak は除外
*.bak

# oldフォルダは除外
old/

# oldフォルダは除外したけど、その中のhoge.txtは除外したくない
!hoge.txt

# ルートフォルダにある.lockファイルは除外
/.lock
スポンサーリンク

まとめ

まずはこの辺を押さえておけば、とっかかりにはなると思います。あとは、おすすめの書籍を紹介しますので、理解を深めて行ってください。

ばったん
ばったん

ばったんのオススメ書籍紹介コーナー!

コメント

タイトルとURLをコピーしました