Gabriel is excited to get their code onto their company’s servers. They sneak into the server room and pull out their USB stick. Right as they are about to plug it into the server, Lars stops him and says, “Whoa there Gabriel! That’s not how we do things around here. You should check out our version control system.”

Version control systems (such as Github) are tools designed to manage different versions of a file or project. They track every change that is made to a file while saving all previous versions of the file. Some of the data that is tracked by a version control system includes:

  • changed files
  • new or deleted files
  • renamed or moved files
  • the author and date of the change

With version control (a.k.a. “source control”), the risk and impact of bugs are reduced. When a new version of the software has issues, it can be compared to previous “stable” versions to identify the error. If necessary, the software can be “rolled back” to previous versions until a fix is implemented. With the author and date of each change stored, development teams can quickly identify who has the most information about a breaking change.

Version control systems (VCS) change how teams work together. Common operations of version control, such as branching and merging enable development teams to collaborate more effectively.

  • Branching is the process of creating a copy of the source code (the “trunk”). Developers can work on their own branches without changing the source code that real users and other developers depend on.
  • Merging is the process of combining the changes in one branch with another. This occurs when the differences between the two branches are ready to be reconciled. When conflicts between branches arise during a merge, version control systems can assist in resolving them.

Lastly, version control systems are able to synchronize with project management tools. For example, when new code is added, an engineering manager can be alerted to review the changes.


Take a look at this diagram of a typical version control system. Through the center of the diagram runs the “trunk”, the source code that all new branches are created from. As each new feature is completed, they must be merged. Sometimes, conflicts occur. Version control systems make resolving these conflicts easier.

Once code has been “checked-in” to a version control system, how does a developer know that their new code is ready to be deployed? In the next exercise, we will learn how teams maintain the quality of new code via testing.

Take this course for free

Mini Info Outline Icon
By signing up for Codecademy, you agree to Codecademy's Terms of Service & Privacy Policy.

Or sign up using:

Already have an account?