Monthly Archives: September 2013

Git Training

QuigonheadshotWow, that was fun.  I had the pleasure of training 174 people (42 in-person, 132 virtually) for an 8-hour session on Git.  Thanks to GoDaddy for sponsoring the event.  It was incredibly fun to run with the audience from “How do I install it?” at the beginning of the day to “So that’s how you rebase” at the end.  And tribute to the attendee who pointed out the similarities between me and Quigon in the image to the left.

Here’s some of the things we spoke about:

  • “Thinking in Git” is a presentation I love giving where our focus is taking the knowledge you’ve gained in TFS or SVN and transferring it into Git.
  • We speak of who uses Git.  Ultimately I love to reference the open-source web stack from Microsoft on CodePlex.  When you click download, you’re greeted not with a TFS link or even an SVN link; you’re asked to “clone or fork in git.”  If anyone needed a nudge that Git is the new normal, that sounds like it.
  • We speak of the beauty of distributed version control systems, overcoming the “subversion dilemma”: “do I commit now and inflict incomplete code on all of you or do I not commit and lose the benefit of source control.”  Thank you to Eric Link for the excellent metaphor.
  • We walk through installing all the Git Tools for Windows.  It was fun to reference the new kid on the block: SourceTree, a free Git GUI by the makers of JIRA.  (It still fascinates me that KDiff3’s installer pops up /behind/ Git Extension‘s installer.)  The cream of the crop is how Git puts a bash shell on my Windows box.  I’ve mis-used that countless times for running shell scripts on Windows.
  • We walk through the staging area, commit, checkout, branching, merging, push, and pull, and reference the SVN and TFS similarities.  All attendees can now recite by heart the great long command to rule them all:

git log –oneline –graph –decorate

  • After lunch, we walked through “Git, GitHub, and GitFlow”, a great presentation where we review what Git gave us “in the box,” and what new things we can do should we choose to also add GitHub and/or GitFlow.
  • A trip through git aliases eased some peoples fingers as they typed “git log –oneline –graph –decorate” for the 279th time.  :D
  • A great question was how to version database content, so I got to demo both SQL Source Control from Red Gate Software and the built-in Database Projects.  (spoiler alert: the workflow in SQL Source Control is far and away worth the cost of admission.  I’m sorry Database Projects, but the master copy is the database, not the text files.)  Though neither tool is great at dumping SSIS Packages to text files, normal database objects like tables, stored procedures, and views work just fine.
  • Other insightful questions led us on journeys of transferring repositories from TFS and SVN to GitHub Enterprise, or transferring from one Git host to another.
  • We got to experience a standard open-source contribution model as we all forked a repository I created for the purpose, cloned it to our machines, changed it in interesting ways, pushed, and created pull requests.  The hilarity ensued as we watched me demo merging interesting situations.
  • We talked a lot about how to reorder, refine, adjust, and route around commits using “git rebase” and “git cherry-pick”.  (That’s when our minds really started spinning.)
  • The final picture from Labyrinth referencing “initial git training” was priceless.

Ultimately, it was a day well spent for all.  Thank you to all who attended and made it a fantastic day.  Want me to do a training at your user group or wish to sponsor a corporate training for your company?  Drop me a line.

Rob