CVS/SVNとGitを比較して理解してみよう
前回の記事はいかがでしたでしょうか。とりあえず、この辺までわかれば、一旦最新の資材が手元で確認できる状態になると思います。
前回の記事はこちら。
Gitから入った方は、特に違和感なく、このまま知識を深めて行ってもらえば良いと思います。
さて、CVS/SVNからの方は、もやもやが残っていると思います。私がCVSからGitに挑戦した時に感じた戸惑いポイントについて、いくつか紹介したいと思います。
比べてみる
なかなか両方を並べている説明がなくて苦労したので、ちょっと作ってみました。
- サーバで集中管理(リポジトリ)している場所から資材一式をローカルに落としてくる最初の作業です。CVS/SVNでは「チェックアウト」、Gitでは「クローン」に該当します。
- 一度リポジトリとローカルのファイルを同期した後は、変更差分のみを取り出すことが可能です。CVS/SVNでは「チームを指定して更新」、Gitでは「プル」に該当します。
- ローカルで編集した資材をリポジトリに登録することが可能です。CVS/SVNとGitどちらも「コミット」に該当します。
ローカルにもコミットできるリポジトリがある
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
まとめ
まずはこの辺を押さえておけば、とっかかりにはなると思います。あとは、おすすめの書籍を紹介しますので、理解を深めて行ってください。
自己学習で限界を感じている方は、オンラインでレッスンを受けられるサービスもありますよ。
<PR>
コメント