March 10, 2016

You might have been to GitHub.comĀ and cloned/downloaded code from it using “git”. But do you know what git is and how it is used?

What is a Version Control System?

Git is one of the most popular version control system. Version control is a system that tracks changes to your code over time so that you can load specific versions later. Version control is also used by teams to make it easier to work on the same code base at the same time.

What problem does Version Control Systems address?

As you are writing more code and make frequent changes to your code, having the ability to keep track of your changes becomes indispensable to your workflow. Think about these common problems software engineers face daily:

  • What if you need to undo/revert a change you made (let’s say you made a mistake)?
  • What if you need to look what your code looks like a month ago?
  • How do you keep track of which code has been released2, and which code has not?

Versioning, Before Version Control Systems

Before version control systems were invented, software engineers had different techniques and practices they followed to keep track of the changes they had made to their code base.

Here are few of the classic tricks:

Create multiple copies/directories

One of the easiest things to do is make a copy of the code base directory and rename it into a different folder.

Create a zip archive for each version

Another common practice is to create a compressed zip archive of your code base. This method is slightly less space-consuming as the older versions are stored in a compressed manner.

Issues with these techniques

  1. Space-consuming. Making multiple copies of your code base can be very space consuming.
  2. Hard to tell changes between versions.
  3. Not scalable. Things will be hard to manage as you start working in teams (no longer alone).

Collaboration with Version Control Systems

As you start collaborating with others over the same code base,Version Control Systems become the center of your team’s software engineering workflow. Why are Version Control Systems essential for teams to collaborate?

  • Who wrote this line/block of code?
  • When and why was this code added?
  • Does my computer have the code you wrote on your computer?
  • How do I send my latest code changes to everyone in the team?

 

Author
Ryan Harijanto

Head of Engineering. Former Sr. Engineer @Netflix , @HotelTonight , @Shutterstock. Previously a Senior Systems Engineer at Netflix, currently technology advisor and board member for emerging companies. Diverse technological knowledge and understanding of various industries.

Leave a Reply

Your email address will not be published. Required fields are marked *