Frequently Asked Question

What is the difference between a distributed and a centralised version control system?

In a centralised system such as Subversion or CVS, there is exactly one authoritative repository on a server. Each developer has a working copy of the latest revision but not the full history; every commit, every log query, and every branch operation has to talk to the server. If the server is down you cannot commit; if the server's disk dies and there is no backup, the history is lost.

In a distributed system such as Git or Mercurial, every clone is a complete copy of the repository: full history, every branch, every tag. You can commit, branch, merge, and inspect history offline, then synchronise with others by pushing and pulling. There is no technical concept of a "central server", GitHub or GitLab are central by social convention, not by Git's design. The distributed model is what made the kind of fork-and-pull-request workflow that powers modern open source possible.

Video

Further reading and video