ホームに戻る
出典 :
バージョン管理システム - Wikipedia
関連 :
バージョン管理システムの基礎
目次 :
集中型VCSと分散型VCS
一つのリポジトリのみを作業者全員で共有する集中型VCSに対し、共用のリポジトリ(リモートリポジトリ)とは別に、各人に固有のローカルリポジトリを使用するのが分散型VCSである。
近年は(特に大規模開発において)、分散型VCSの利用が増えている。
集中型VCSは、リポジトリが一つしかないため途中段階でのコミットが(多くの場合)許可されないが、扱いが簡便であることから少人数・小規模の開発には集中型が向くこともある。
分散型VCSにおける概念
(集中型VCS、および共通する概念については、
バージョン管理システムの基礎
を参照のこと。)
分散型VCSでは、共用のリモートリポジトリとは別に、各人がローカルリポジトリを作成できる。
リモートリポジトリが存在するのであれば、「クローン」を行うことでローカルリポジトリを作成でき、これは(その時点での)リモートリポジトリの情報をすべて含んでいる。
(逆に、「プッシュ」でローカルリポジトリからリモートリポジトリを作成することも可能。)
リモートリポジトリが更新された場合、「プル」を行うことでローカルリポジトリをリモートリポジトリに同期できる。
ローカルリポジトリへの変更は「コミット」によって確定されるが、リモートリポジトリに反映するには「プッシュ」が別途必要となる。
概念の比較
操作
集中型
分散型
(リモート)リポジトリをローカルに複製
チェックアウト
クローン
(リモート)リポジトリへの反映
コミット
プッシュ
ローカルリポジトリの変更を確定
-
コミット
作業コピー / ローカルリポジトリを(リモート)リポジトリに同期
更新(アップデート)
プル
分散型VCSの利点
各人がローカルリポジトリを占有できるため、
目的に合わせて自由に(ローカルリポジトリ上に)ブランチを作成できる
(ローカルリポジトリ上でブランチを作成しても、プッシュしない限りはリモートには影響を及ぼさない。ブランチ単位でのプッシュも可能である)
途中段階でのコミットが自由に行える
などが集中型との差異として挙げられる。
場所によっては、「一機能一コミット」などのルールが課されることがあるが、ローカルでのコミットそのものに制限はない。
但しその場合、リモートへプッシュする前に複数回のコミットをひとまとめにする「リベース」が必要となる。
(そのままプッシュした場合、各回のコミットがすべて履歴に残るため、履歴が煩雑となることがある。)