(Git) GitとGitHubの違い、Gitとsvnの違い

git-github-svn

 

Gitを学び始めたころ、GitとGithubの違いと、GitとSVNの違いがなんなのかよく分からなかったので、調べたことをメモ

 

Git、GitHubとは

前提として、簡単に両者の定義を押さえておく(主観だが)

 

Gitとは

git-image

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

 

GitHubとは

github-image

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

 

GitとGithubの違い

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

git-github-difference

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

で、バージョン管理されてるプログラムソースを置いておく場所をインターネット上の一箇所にまとめちゃいましょうねってしたのが、GitHubっていう場所

 

GitとSVNの違い

git-vs-svn

Gitより昔から使われているバージョン管理システムで「SVN」が存在する。
SVNとの違いについても考察していく。

 

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

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

 gitとsvnの違いの画像

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

この時、バージョン管理のデータの保管先は、ローカル端末のクローンレポジトリなので、バージョン管理に必要な作業は全てオフラインのローカル端末で完了してしまう(のちにローカルのバージョン管理データをGithubに送信する際はもちろんオンラインでなければならない)。このことから、開発者が場所を選ばず、各々のリポジトリで柔軟にバージョン管理をすることが可能なのが分散型バージョン管理であるGitの強みだ。

 

一方SVN開発の場合、バージョン管理の情報は、各自のローカル上のレポジトリではなく、SVNサーバなどの一つの集中したリポジトリを用意し、その集中リポジトリに全てのバージョン管理情報を保管する形になる。

一見データが一箇所に固まっていて管理が楽そうに見えなくもないが、SVNの場合、データのコミットなどの際、SVNサーバとローカル端末はネットワークで繋がっている必要があるし、SVNサーバが故障するなどした際に、集中して保管しておいた全てバージョン管理データが失われてしまうなど、Gitに比べるとそのデメリットが大きい。

 

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

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

 

 

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

コメントを残す

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