Introduction

What’s version control?

Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time. Atlassian

A brief history of Git

Git is the most widely used version control software. Git is complex and with complexity comes power and efficiency. Git was invented as better alternative to Mercurial and CVS. Git was initially released in 2005 and has since grown in adoption.

Most distributed version control systems are git-based and use git under the hood to provide the power of Git among other powerful features. Github, Bitbucket and Gitlab are the most common Git-based distributed version control systems.

Benefits of using Version control

1. Efficiently track changes

Tracking changes in source and related non-source files becomes easier with version control. No more .zips and .rars for projects. Version control software like Git offers a feature known as branching. Branching enables one to create a “branch”, which is a snapshot of the current “main” branch containing all the most recent versions of the source at that point of time, which they can make changes independent of the main branch and later “merge” the changes.

Each change is known as a commit, identified by a unique(meaningful message), each commit is uniquely identified by a unique commit hash

2. Efficient teamwork and collaboration

Git-based platforms take the benefits of version control a notch higher, by:

  • Providing distributed, asynchronous collaboration
  • Issue tracking with third-party tools such as Jira
  • Providing mechanisms of version releases
  • Providing CI/CD integrations
  • Team code review for incoming changes from collaborators On these platforms, one can add a collaborator to their project, where they can start contributing and participating right away(no sending of zips back and forth)

3. Project management

Project management becomes more efficient, with the integration of tools such as Github Desktop and Git Kraken(commercial), working on a project both at the individual and team level becomes efficient as these tools provide Git functionalities in a user-friendly manner, allowing a user to focus on version control and less about the inner workings of Git. More like not needing to know the theory of combustion and car engines to drive a car.

4. Better source distribution

Remember the FTP days? You had to log in to a server to upload changes using an FTP client like FileZilla to upload the most recent changes to a web app, an API? Git offers integration with remote Git-based platforms mentioned above to make deployment and distribution sources easier. One of the ways of achieving this is through setting up CI/CID pipelines with deploy tasks. One can set up a task that does a deployment on any qualifying changes to the main branch.

This comes last in the list because it’s less beneficial to look at Git and any Git-based platform primarily as a “backup” tool. Git offers a lot more if used correctly, for a large project, it’s easier to see who made changes, when they made the changes and how they did the changes. Use as a “backup” tool would mean looking at changes “dumped” with meaningless messages three years ago.

One under-estimates the power of Git and related tooling until they have to work on a project with no version control. That’s a lot o' pain, a lot o' pain.

Summary

Version control (with Git) has become a lot more like English, you don’t have to speak it fluently but at least learn how to use it efficiently. Start using Git and focus on writing code and collaborating. Git is so widely adopted that it has in recent years become part of job requirements for most Software Engineering roles.

Found this article useful? Read more about crafting meaningful git commit messages