量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

(おまけ)バージョン管理システムにおける集中型と分散型の違い。

スポンサーリンク

Subversion のような集中型バージョン管理システムしか使ったことがない人にとって、Git や Mercurial のような分散型バージョン管理システムを理解するには少し苦労すると思う。(自分も正しく理解できている自信はないけど…)


例えば、リポジトリにリモートとローカルの二種類があることや、プッシュやプルといった用語は馴染みがないはずだ。
また、集中型におけるチェックアウト・コミットと、分散型におけるチェックアウト・コミットの役割は若干異なる。


まず、リポジトリワークスペースの関係は以下のようになる。



次に、チェックアウト・コミット・プル・プッシュの意味合いは大体こんなイメージになる。



とりあえず、こんな感じの理解で良いはず。

  • 集中型におけるチェックアウト = プル + 分散型におけるチェックアウト
  • 集中型におけるコミット = 分散型におけるコミット + プッシュ



ちなみに、Git は今年に入って使い始めたが、Mercurial は数年前に使い始めた。
まだ Git に慣れていないというのもあるが、今の所、Mercurial の方が GUI アプリケーション(TortoiseHG)の完成度が高くて使いやすいと感じている。


参考資料:

関連記事: