初期のバージョンコントロールシステムは、集中型(centralized)モデルでデザインされていて、各プロジェクトはすべての開発者が使用するただ1つのレポジトリをもちます。SCCS、RCS、CVS、Subversion、SRCはこの種のモデルを共有します。このモデルの欠点の1つは、レポジトリが信頼性と効率の要衝となることです。
GNU Archは、分配型(distributed)または分散型(decentralized)のバージョンコントロールの先駆で、後にGit、Mercurial、Bazaarで実装されました。プロジェクトは複数の異なるレポジトリをもつことができ、これらのシステムはレポジトリ間で変更履歴を調停する、ある種のスーパーマージをサポートします。開発者ごとに1つのレポジトリがあり、レポジトリのマージがコミット操作を代行します。
VCは個人の作業ファイルと、レポジトリとの間で行われる通信を管理する手助けをします。VCは、レポジトリが唯一のマスターなのか、それともネットワークのピアーのレポジトリの1つなのかは関知しません。