What is a distributed version control system?
Traditional version control systems (like concurrent versions system (CVS) and others) use a central server that maintains a single, coherent repository state at all times. These systems let developers push and fetch code and allowed the use of branches, tags, and other familiar mechanisms. The important point is that these version control systems were designed with a central authority in mind.
Git and other DVCSs, like Mercurial and Fossil, use a different approach. Each developer has their own complete repository. Other developers, instead of going through a central server, pull from each others’ repositories to fetch changes. In the case of the Linux project, there are hundreds of independent repositories in use by developers. Once a developer feels that the state of one of these repositories is ready, they will ask for the changes to be pulled into the main kernel. This is where the term pull request comes from.
While...