A version control system (an aspect of Source Code Management or SCM) is a combination of technologies and practices for tracking and controlling changes to a project's files, particularly for source code, documentation, and web pages.
The reason version control is so universal is that it helps with virtually every aspect of running a project—inter-developer communications, release management, bug management, code stability and experimental development efforts, and attribution and authorization of changes by particular developers. The version control system provides a central coordinating force among all of these areas.
The core activity of version control is change management—identifying each discrete change made to the project's files, annotating each change with its metadata, such as the timestamp and author of the change, and then replaying these facts to whoever asks, in whatever way they ask. It is a communications mechanism where a change is the basic unit...