Since its introduction less than a decade ago, the Git version-control system has taken the world of software by storm. Most open-source projects use it, and a growing number of companies are starting to use it, as well.  Git is powerful, fast, flexible, and distributed, giving an unparalleled degree of speed and freedom to developers.

Git has one problem, though: The learning curve is quite steep, especially (ironically) if you have experience with a previous version-control system such as SVN or Perforce.

In my Git courses, I explain and demonstrate the theory behind Git, so that participants will know not just what commands to run (which is typical, in my experience, of what large companies tell their Git newbies), but also why they’re using those commands, and what is going on. With practice, practice, and even more practice — on individual computers, and using the network in pairs — participants learn what it means to commit, branch, merge, pull, push, rebase, and cherry pick — and of course, how to handle conflicts within the code.

I currently offer two Git courses — one in Git itself, and the other for the Gerrit code-review system built on top of Git: