5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CVSとSubversionとGitを比較してみる

Last updated at Posted at 2021-06-19

いまだに Git のことがよくわかっていない私ですが、これまでに使ってきたバージョン管理システムである CVS, Subversion, Git を比較してみました。

この比較では、各システムが内部的にどう管理しているのか、集中型か分散型かなどは置いておき、自分の理解を整理するためにバージョンの振りかた・タグ・ブランチの違いを図にしてみました。

比較

CVS

変更がコミットされるごとに、ファイルごとのリビジョンが上がります。

ブランチは切り替えるもので、タグはある時点での各ファイルごとのリビジョンをまとめたものです。

CVS

Subversion

変更がコミットされるごとに、全体のリビジョンが上がります。

ブランチはフォルダへのコピーで、タグもフォルダへのコピーです。

Subversion

Git

変更がコミットされるごとに、コミットを表すハッシュ値が生成されます。

ブランチは切り替えるもので、タグはコミットに対する別名です。
ブランチは切られた枝全体を指すのではなく、枝の先端のコミットを指すもののようです。コミットには parent があるのでブランチが通ってきた履歴を追うことができます。

Git

まとめ

CVS Subversion Git
リビジョン(ハッシュ値) ファイルごと リポジトリ全体に対するもの ソース一式に対するもの
ブランチ 切り替えるもの コピーされたフォルダ 切り替えるもの
タグ ブランチに対するもの コピーされたフォルダ ソース一式に対するもの

図にしてみたところ CVS と Git の差が驚くほど少なく感じられ、Subversion がブランチとタグをディレクトリとして扱う点がかなり大きな違いであることが浮き彫りになりました。


編集履歴

  • 2022/08/03 Gitのブランチの理解が間違っていたので図を差し替え
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?