バージョン管理システムとは、ファイルを編集した際にバージョンとして履歴を残し、ファイル管理を効果的に行うことのできるシステムです。バージョン管理システムの主な特徴として、以下の点があります。
・編集履歴をバックアップとして残すことができ、いつでも復元可能
・差分機能を使用することで、ミスした場合の特定が容易
・履歴と一緒にコメントも残すことができ、変更意図が分かりやすい
バージョン管理システム(VCS)には、分散型と集中型があり、分散型システムを使用したの代表的なアプリとして「Git」、集中型システムを使用した代表的なアプリとして「Subversion」があります。それらを例にして、それぞれの特徴についてみていきます。
【集中型VCS:Subversion】
集中型VCSの特徴として、ファイルを管理するリポジトリと呼ばれる格納場所がサーバーで一括管理されています。ファイルを編集する際には、サーバーのリポジトリにリモートアクセスし、ローカル上にダウンロード[チェックアウト]します。修正・追加した内容を反映させる場合には、リポジトリへ登録[コミット]します。
【分散型VCS:Git】
分散型VCSの特徴として、サーバーにあるリポジトリを各PCにローカルリポジトリとして複製し分散して管理しています。ファイルを編集する際には、複製されたローカルリポジトリに反映[コミット]し、その都度リモートリポジトリに反映[プッシュ]します。
一度ローカルにコミットして、リモートリポジトリに反映するため、競合[コンクリフト]が少なくなります。
※Subversionは競合が発生した場合、ファイルを退避してローカルを最新の状態にした後、リモートに反映するので手間がかかります。
また、分散型であるGitの最大の特徴として、ブランチ管理することにあります。ブランチ管理とは、元ファイルと別に自分専用のファイルを作成[ブランチ]することができ、ローカルリポジトリに反映[コミット]し、ファイルを整形してリモートリポジトリに反映することができます。このブランチがあることによって、
複数人で作業する際には、利便性が高いです。
Subversionにもブランチ管理可能ですが、ファイルの変更管理方法がファイル単位で行っており、リモートとローカルリポジトリが同じとは限らないため、個々のファイルの履歴を追跡しなければならずブランチ運用が難しくなります。
一方、Gitのファイル管理方法はコミット単位で管理されいるため、差分比較が容易であり、
すべてのリポジトリが同じ構造になっているため、マージ処理などが容易にできるため、ブランチ運用が集中型のSubversionより、容易となっています。
■参考資料
https://www.ricksoft.jp/blog/archives/9483/