What is Version Control?
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
It allows you to revert files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.
Local Version Control Systems
Many people’s version-control method of choice is to copy files into another directory
It is easy to forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.
To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.
One of the more popular VCS tools was a system called RCS
RCS works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches.
Centralized Version Control Systems
Need to collaborate with developers on other systems.
Centralized Version Control Systems (CVCSs) were developed. These systems, such as CVS, Subversion.
For many years, this has been the standard for version control.
Administrators have fine-grained control over who can do what; and it’s far easier to administer a CVCS than it is to deal with local databases on every client.
This setup also has some serious downsides. The most obvious is the single point of failure that the centralized server represents.
Server goes down for an hour
If the hard disk the central database is on becomes corrupted, and proper backups haven’t been kept
Distributed Version Control Systems
In a DVCS (such as Git), clients don’t just check out the latest snapshot of the files: they fully mirror the repository.
Thus if any server dies, and these systems were collaborating via it, any of the client repositories can be copied back up to the server to restore it.
Every clone is really a full backup of all the data.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git is a version control system that is used for software development and other version control tasks. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows. Git was created by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development.
Some of the goals of the new system were as follows:
Strong support for non-linear development (thousands of parallel branches)
Able to handle large projects like the Linux kernel efficiently (speed and data size)