Git training for new devs

<update> This is now outdated and includes references to non-public resources and links to Albion docs which have moved. What wasn’t available at the time, but which is now, is the excellent learn.github.com instructions for newcomers to git. Now I just have our new devs follow along with the github tutorials. The videos in particular are well done and have proven very helpful.

Still, by far the most important things to teach a new developer before turning him/her loose on your repositories are:

  1. Commit all the time. Commit a hundred times a day. Make commits for single line changes if that was all it took to complete that task.
  2. All commit messages reference a work ticket, no exceptions. All commit messages stick to the rules.
  3. Use rebase to squash “fixing last commit” commits.

</update>

Most of the new developers we hire are recent graduates with perhaps only one year of non-academic experience. While they’re perfectly at home with Eclipse (or Netbeans in a few cases) only a handful have any real experience with version control (most commonly Perforce or VSS). None (to date) have ever used git before.

We rarely use the advanced features of git (and by advanced I mean anything beyond a simple rebase) and there are many resources available to guide new developers. Just in case anyone else finds this useful, here is the copy/pasted intro to git taken from our wiki:

Installing git

  1. Download msysgit and run the installer
  2. Download the git Eclipse plugin. Update: this is now much easier, just search for “egit” in the Eclipse Marketplace and install from within Eclipse.

The Eclipse plugin uses a Java implementation of Git, not the official C implementation. You need both. Update: for simple work this is arguably no longer true and you could get by with just jgit/egit.

Introducing git

  1. Clone the example repository at git@code.albionbpo.com:intro.git
  2. Open an msysgit command window in the cloned directory
  3. Open INTRO.html and follow the commands in msysgit