Gitを学び始めたころ、GitとGithubの違いと、GitとSVNの違いがなんなのかよく分からなかったので、調べたことをメモ
Contents
Git、GitHubとは
前提として、簡単に両者の定義を押さえておく(主観だが)
Gitとは

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

Gitで管理されたプログラムソースなどをインターネット上で保管、公開などできるようにしたwebサービスのこと。ローカル端末上のリポジトリで管理していたバージョン管理データを、githubに保管・公開することができる。
GitとGithubの違い
Gitはシステムで、GitHubは場所と考えたらわかりやすかった

Gitは各ローカルPCにインストールし、
プログラムソースをバージョン管理できるシステムのこと。
で、バージョン管理されてるプログラムソースを置いておく場所をインターネット上の一箇所にまとめちゃいましょうねってしたのが、GitHubっていう場所。
GitとSVNの違い

Gitより昔から使われているバージョン管理システムで「SVN」が存在する。
SVNとの違いについても考察していく。
Gitは分散型バージョン管理、svnは集中型バージョン管理。
GitとSVNは両者ともバージョン管理システムという点では変わりはないが、そのシステムのあり方に大きな違いがある。Gitは分散型バージョン管理システムで、SVNは集中型バージョン管理システムだという違いだ。

Git開発では、GitHubにあるリモートレポジトリを、ローカル端末上にコピーしてきて、コピーして来たレポジトリ(クローンレポジトリと言う)に対して開発を行っていく。
この時、バージョン管理のデータの保管先は、ローカル端末のクローンレポジトリなので、バージョン管理に必要な作業は全てオフラインのローカル端末で完了してしまう(のちにローカルのバージョン管理データをGithubに送信する際はもちろんオンラインでなければならない)。このことから、開発者が場所を選ばず、各々のリポジトリで柔軟にバージョン管理をすることが可能なのが分散型バージョン管理であるGitの強みだ。
一方SVN開発の場合、バージョン管理の情報は、各自のローカル上のレポジトリではなく、SVNサーバなどの一つの集中したリポジトリを用意し、その集中リポジトリに全てのバージョン管理情報を保管する形になる。
一見データが一箇所に固まっていて管理が楽そうに見えなくもないが、SVNの場合、データのコミットなどの際、SVNサーバとローカル端末はネットワークで繋がっている必要があるし、SVNサーバが故障するなどした際に、集中して保管しておいた全てバージョン管理データが失われてしまうなど、Gitに比べるとそのデメリットが大きい。
他にもメリットやデメリットを調べたが、svnと大きく概念が違うメリットは上記の点だと思った。
ローカルにレポジトリがあるって感覚がsvnしか使ったことがない人には理解に時間がかかると思う。
あとはなんだろう、ソースツリー(Gitのクライアントソフト)での変更点の見やすさとか?。
あとGitHubがあることで、他人にソースコードを見てもらったり、逆に見るのもお手軽になったのは開発の現場以外でもありがたい。
コメントを残す