Version Control Manager
Tags: versionctrl
Published: 2020-07-06 13:54:45

   In this article, I will be reviewing version control. We will talk about what exactly is version control, how do you use it, different VCM's, and what the benefits of use are. 

   Before we go over version control, let's identify a few moving parts involved with version control. A *repository* (commonly referred to as repo) is a collection of source code. A repository has *commits* to the project which is a set of references to the commits. A *commit* logs a change or series of changes that you have made to a file in the repository.

#**What is version control?**

   Version control is an invaluable tool for any kind of software development. It is a management system that allows you to record and track changes in your source code and files so that you can recall certain versions later. Creating a log of all the changes made to code allows programmers to make sure that multiple developers working on the same project do not step on each other's toes. Even if you're not working on a team, it helps keep track of all your changes just in case you break code and have to revert to the working code or previous commits.

##**How to use version control?**


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jkj2im3sdsdq172ysxsw.png)


   In software development, a team needs an efficient way to manage changes and version code in their codebase. Developers often refer to their codebase as a working tree. Like a tree, our codebase extends to different branches that contain different versions of code. To utilize version control, we run commands in the terminal of the workspace. 

   Above we have a visualization of a working tree. This working tree represents our codebase. There is a team of coders working on this same code base. Each author can make their edits without affecting the main branch. This prevents loss of working or optimized code.


**Popular version control systems**
* Github
* GitLab
* Beanstalk
* PerForce

 Below are some remote commands you would use what working with someone else on your tree. Use the following commands:

* This command allows you to see what authors are added to your tree:
   - git remote -v

* This command allows you to add an author to your working tree:
   - git remote add <remote name> <repo link>

* This command allows you to remove an author from your working tree:
   - git remote rm <remote name>



***Useful Situations?***

**Tracking**: Say you are working on a web application, and one day, you find that your code changes have broken parts of the website. Instead of going through the trouble of finding the bug, you can revert your changes and see what lines of code are causing the problem.

**Teamwork**: Without a version control system, it’s challenging to work on the same source code at once. By using something like Git, you can more easily merge changes, which makes it significantly easier to collaborate on projects.

**Branches**: Say you are working on the footer and header of your website without using a version control system. You’ve finished the header, but not the footer, which means that the project isn’t ready to be public. With a version control system, you can create branches for different aspects of the project you are working on and merge them into​ the main source code when you are done.

**Benefits of Version Control**

Due to how useful version control is, it’s almost always a requirement for any developer or engineering job. As you become more accustomed to using a version control system, you will realize how powerful and easy it is to use. It helps to commit and merge code without conflicts. Also, while using it on a team, you can even make edits to shared code, without unknowingly overwriting each other’s work.


*Sources*
https://www.educative.io/edpresso/what-is-version-control
https://gource.io/
https://www.educative.io/edpresso/what-is-git