This is a course targetted at programmers who are interested in using the git version control system.

Git is reputed to be a system that's easier to learn "inside out". This course quickly skims over the "common" version control commands that most people are familiar with and then dives into the repository and it's format to make the students aware of what goes on beneath the hood so that they're comfortable using the system.

The course dives into daily use and gets more and more advanced as it goes on. We will cover basic usage, architecture, the branching model and some workflow concepts.

Course content

An outline of the contents follows

  • Introduction to version control

    Discusses types of version control systems, their differences, merits and demerits.

  • Introduction to Git

    A basic idea of git, it's history, architecture and a few simple commands to get familiar with the environment.

  • Architecture

    A deep dive into the architecture of git, it's storage system, implementation and the concept of "objects" and "references"

  • Branches and tags

    Discusses the implementation and use of branches in git. How they work, what they're used for and how to do merges between them. Also discusses merge conflicts and practical ways to resolve them.

    Discusses tags and how they're used.

  • Collaboration and workflows

    Introduces the idea of remotes and how they're used to publish code. Fetch and push commits from different users, handle real life merging scenarios and collaboration between users.

    Also discusses a few common workflows used in organisations that use git.

  • Useful utilities

    Discuses common commands that are used in git which were not covered in the sections above like bisect, cherry-pick, describe etc.


All participants must come with a laptop to the course. It's best to have a GNU/Linux variant installed on it since git is a child of the UNIX tradition.

The laptop should have the following software installed on it.

  • Git itself
  • This script will be used to inspect the repository so it would be useful if people had ruby, grit and graphviz installed on their machines. This is not compulsory though.
Detailed setup instructions will be posted here soon.

The tutorial will be done on a Gnu/Linux platform and it would be best if the participants used the same.

Registered participants can contact me before the training if they need help with installation and setup so that we don't waste time at the venue. My email address is noufal at nibrahim dot net dot in.

Participants are expected to be knowledgeable about the general ideas of version control. Please contact me before the course if there are things you want clarified about the pre requisites.

Venue and timing

The training will take place at

Level 1
Tower B
The Millenia
1 & 2 Murphy Road

View Larger Map

Lunch and tea will be provided at the venue. Two wheeler parking should be available at the building since it's a weekend.

The training will take place on the 22nd and 23rd of October 2011. It will last from 10:00 am to 5:30 pm on both days.

There will be no internet at the venue so please make sure that you have everything you need before you come. There will be a local network so that the participants can share code and work with each others repositories.

Audience size and pricing

The price of the course is 5500 INR per head. The maximum class size is 18 so please book your tickets as soon as possible. Please go to to register.


For details on other trainings, to stay up to date about classes that I offer or to arrange a custom training for a company, please refer to to my trainings page.

For any clarifications, please contact noufal at nibrahim dot net dot in.