(図解) GitとSVNの違い

(図解) GitとSVNの違い

 

本記事では、GitとSVNの違いがなんなのかよく分からない人向けに、
両者の違いを図解を踏まえて分かりやすく解説していく。

またついでに、GitとGithubの違いにも後半で触れていく。

 

GitとSVNの違い

git-vs-svn

結論から言うと、GitとSVNの違いとは、
Gitは分散型バージョン管理、svnは集中型バージョン管理と言う違いだ。

両者ともに、バージョン管理ツールであると言う点に違いはないのだが、
上記の違いに伴い、バージョン管理の仕方で異なる点がいくつか存在する。

 

Gitは分散型バージョン管理、svnは集中型バージョン管理。

GitとSVNは両者ともバージョン管理システムという点では変わりはないが、そのシステムのあり方に大きな違いがある。Gitは分散型バージョン管理システムで、SVNは集中型バージョン管理システムだという違いだ。

 gitとsvnの違いの画像

Gitのバージョン管理

Gitでは、開発者はGitHubにコミットしてある大元のレポジトリ(リモートレポジトリ)を、ローカル端末上にコピーしてくる。そしてコピーして来たレポジトリ(クローンレポジトリと言う)に対して開発を行っていく。

Gitのバージョン管理の仕組みの画像

 

この時、バージョン管理のデータの保管先は、ローカル端末のクローンレポジトリなので、バージョン管理に必要な作業は全てオフラインのローカル端末で完了してしまう(のちにローカルのバージョン管理データをGithubに送信する際はもちろんオンラインでなければならない)。

このことから、開発者が場所を選ばず、各々のリポジトリで柔軟にバージョン管理をすることが可能なのが分散型バージョン管理であるGitの強みだ。

 

Gitのバージョン管理のポイント
  • 開発者は、リモートレポジトリからローカルへリポジトリのクローンを作成する。
  • ローカルのクローンレポジトリへソースのバージョン管理情報を記録(コミット)する。
  • ローカルのリポジトリへの記録はオフラインでも可能なので、場所を問うことがない。

 

SVNのバージョン管理

一方SVNの場合、バージョン管理の情報は、各自のローカル上のレポジトリではなく、SVNサーバなどの一つの集中したリポジトリのみである。その集中リポジトリに、開発者たちはバージョン管理情報を直接コミットし、バージョン情報を保管する形になる。

SVNのバージョン管理の仕組みの画像

 

一見データが一箇所に固まっていて管理が楽そうに見えなくもないが、SVNの場合、データのコミットなどの際、SVNサーバとローカル端末はネットワークで繋がっている必要がある。

また、SVNサーバが故障するなどした際に、集中して保管しておいた全てバージョン管理データが失われてしまうなど、Gitに比べるとそのデメリットは大きい。

 

SVNのバージョン管理のポイント
  • レポジトリは大元の一つのみ
  • 開発者は、バージョン管理情報を大元のレポジトリに直接コミットする
  • ネットワークが必須であり、大元のレポジトリが故障したりした際のリスクが大きい

 

他にもメリットやデメリットを調べたが、svnと大きく概念が違うメリットは上記の点だと思った。
ローカルにレポジトリがあるって感覚がsvnしか使ったことがない人には理解に時間がかかると思う。

あとはなんだろう、ソースツリー(Gitのクライアントソフト)での変更点の見やすさとかだろうか?。あとGitHubがあることで、他人にソースコードを見てもらったり、逆に見るのもお手軽になったのは開発の現場以外でもありがたい。

 

 

GitとGithubの違い

ここからはおまけとしてGitとGitHubの違いにも触れておく。

結論から言うと、Gitはシステムで、GitHubは場所と考えたらわかりやすかった

git-github-difference

Gitは各ローカルPCにインストールし、
プログラムソースをバージョン管理できるシステムのこと。

GitHubは、バージョン管理されてるプログラムソースを置いておく場所をインターネット上の一箇所にまとめておくための場所だ。

 

Gitとは

git-image

プログラムソースなどの変更履歴を管理する、分散型のバージョン管理システムのこと。
ローカルの端末上のリポジトリで、バージョンの管理データを保管することができる。

 

GitHubとは

github-image

Gitで管理されたプログラムソースなどをインターネット上で保管、公開などできるようにしたwebサービスのこと。ローカル端末上のリポジトリで管理していたバージョン管理データを、githubに保管・公開することができる。

 

関連記事

Gitのconifgファイルを理解する(system, global, localの違い・場所・編集方法など)
(Git) .gitignoreの書き方を解説

https://git-scm.com/

https://github.co.jp/

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。