In a distributed VCS, such as Git or Mercurial, there is no concept of a central copy. When a developer clones a remote repository, they get a full copy including all the metadata and history of the project to their machine. Distributed VCS do not preclude you from keeping a central, authoritative copy of your project, rather, they allow you to have fully functional local copies as well.
What does this mean in practice?
The main difference is that the distributed VCS breaks the centralized commit into two separate actions, which are as follows:
- Commit: This records the changeset on the local repository
- Push: This pushes one or more local commits to the remote repository
This creates a number of advantages, which are listed ...