ホームに戻る
出典 :
バージョン管理システム - Wikipedia
関連 :
バージョン管理システムの基礎
目次 :

集中型VCSと分散型VCS

一つのリポジトリのみを作業者全員で共有する集中型VCSに対し、共用のリポジトリ(リモートリポジトリ)とは別に、各人に固有のローカルリポジトリを使用するのが分散型VCSである。
近年は(特に大規模開発において)、分散型VCSの利用が増えている。
集中型VCSは、リポジトリが一つしかないため途中段階でのコミットが(多くの場合)許可されないが、扱いが簡便であることから少人数・小規模の開発には集中型が向くこともある。

分散型VCSにおける概念


(集中型VCS、および共通する概念については、バージョン管理システムの基礎 を参照のこと。)
分散型VCSでは、共用のリモートリポジトリとは別に、各人がローカルリポジトリを作成できる。
リモートリポジトリが存在するのであれば、「クローン」を行うことでローカルリポジトリを作成でき、これは(その時点での)リモートリポジトリの情報をすべて含んでいる。
(逆に、「プッシュ」でローカルリポジトリからリモートリポジトリを作成することも可能。)
リモートリポジトリが更新された場合、「プル」を行うことでローカルリポジトリをリモートリポジトリに同期できる。
ローカルリポジトリへの変更は「コミット」によって確定されるが、リモートリポジトリに反映するには「プッシュ」が別途必要となる。

概念の比較

操作 集中型 分散型
(リモート)リポジトリをローカルに複製 チェックアウト クローン
(リモート)リポジトリへの反映 コミット プッシュ
ローカルリポジトリの変更を確定 - コミット
作業コピー / ローカルリポジトリを(リモート)リポジトリに同期 更新(アップデート) プル

分散型VCSの利点

各人がローカルリポジトリを占有できるため、 などが集中型との差異として挙げられる。

場所によっては、「一機能一コミット」などのルールが課されることがあるが、ローカルでのコミットそのものに制限はない。
但しその場合、リモートへプッシュする前に複数回のコミットをひとまとめにする「リベース」が必要となる。
(そのままプッシュした場合、各回のコミットがすべて履歴に残るため、履歴が煩雑となることがある。)