Version control systems
Tags: git, programming, beginners, tutorial
Published: 2021-12-02 09:36:42

## <u>What is version control?</u>



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bv65ou20r422jz6iz3dc.png) 
Version control also known as source control is the practice of tracking and managing changes made to software code.

Version control systems are software tools that enable developers to manage changes made to source code over time.
By using VCS, developers can find out:

- **Which changes were made**?
- **Who made the changes**?
- **When were the changes made**?
- **Why were changes needed**?

VCS keeps track of every modification to the code. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to fix the mistake while minimizing disruption to other team members or users of the code.

Teams consisting of software developers are continually writing source code or changing existing source code. Version Control Systems protect such source code from catastrophe and casual errors and/or unintended consequences. With VCS, a particular developer may work on a new feature while another developer from the same team may make changes to several parts of the same code.It also has an advantage of breaking geographic barriers in that a team can comprise of developers from different geographic locations and still achieve their goal.

Version Control System tracks every individual's change by each contributor and helps in preventing each others work from conflicting. However, changes made by different developers in the same team can get incompatible. This issue should be resolved in an orderly manner without blocking the work of the rest of the team.

Good version control systems should not impose unnecessary limits to its users. It should work on any platform and not dictate what operating system or tool chain to be used. It should facilitate smooth and continuous flow of changes to the code rather than the frustrating and clumsy mechanism of file locking. A good version control software should therefore give green light to a particular developer without blocking the progress of others.

## Why use Version Control Systems?


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjz0b95w89siw3rwll4x.jpg)
 

> mmmmh...still not convinced? Well, here me out
 
Software teams that do not use any form of version control face problems like not knowing which changes have been made or incompatible changes between two pieces of work. They then have to painstakingly untangle and rework.
If you are a developer and at some point did not use version control, then you may have added versions to your files and  later on had to deal with the new final version. In worse scenarios, you may have commented out some code blocks to disable certain functionalities fearing that you may need the code later. 
It is clear how much version controls are important. Once accustomed to the powerful benefits of VC, most developers would never consider working without this tool.

## Benefits of version control systems
 

- It is best practice for high performing software and DevOps teams.
- Helps developers to work faster.
- Allows teams to preserve efficiency and agility even when the team scales to include more developers.
 

> NOTE:
While it is possible to develop software without using any version control, doing so subjects the project to a huge risk that no professional team would advise you to accept.
So the question is not whether to use version control but rather, which version control system to use.

There are many choices but the most common version control is git
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nz4m9dlsbhi2au3b5o44.png)