# Version Control

*Version control*, also called *Source control*, allows you to track and manage all of the changes to your code.

### Why Use Version Control?

* Multiple people could work on the same project simultaneously.
* Serves simultaneously as a repository, project narrative, communication medium, and team and product management tool.
* Records all changes in a log
* Allows team members to work concurrently and provides the facility to merge that work back together.
* Traces each change made to the software.
* Data is transitory and can be lost easily.

### What is Version Control System?

Also known as a source code manager (SCM) or a revision control system (RCS), it is a system that keeps track of changes to a file or set of files and in case of any problems, lets you go back in history, comparing changes over time, and easily revert to a working state of your source code. SVN, Mercurial, and the massively popular Git are popular version control systems for developers. All of these are free and open-source. 

![Version Control](https://user-images.githubusercontent.com/21223421/111696461-03056580-883d-11eb-82c4-7f8d926629e6.png)

With distributed version control systems like Git, you would have your source code stored on a remote repository like GitHub and also a local repository stored on your computer.

You will learn more about remote and local repositories in the next few chapters. Still, one of the main points for the moment is that your source code would be stored on a remote repository, so in case that something goes wrong with your laptop, you would not lose all of your changes, but they will be safely stored on GitHub.
