Git under the hood

Date and Time: 
2015 Sept 24 @ 9am to 4pm
ML - Vislab
Jeffrey Haemer

A key to software-tool comfort is having he right mental model of what the tool’s actually doing. I field daily questions from folks who say things like, “I did a git tag -d, to delete the tagged version but it looks like the code from that version is still in the branch,” or “I checked out the tagged release and made a hot-fix to it, but I can’t figure out why git won’t push that to GitHub.”

These folks don’t have technical problem, they just have the wrong idea of how git actually works.
Getting the right mental model takes you a long way towards mastery, so you can do what you want and be a resource for your co-workers.
Learning a collection of hundreds of magic, git incantations doesn't help. Learning what’s actually going on does.
That’s what I want to teach.


  • Basic Repo Structure: what’s down there,how it gets there, and what some common git subcommands do.
  • Lessons from History -- what came before git and what directions git is going
  • Branches and Tags as sticky notes
  • Social Git: how your repo talks to remotes, and other unfinished business.


Geeks with laptops. Attendees will want to try the stuff I talk about. They should know how to use the shell in a terminal window. They will need to install packages, either on their own boxes or on servers they can launch and administer in the cloud (AWS, GCS, Rackspace, whatever).

This is *not* a git intro, so git may not make sense yet -- otherwise, why attend? -- but an attendee should have used basic, git commands.

Attendees will walk away much less mystified by git. They'll stop feeling like it's "version control for people with too many IQ points." They’ll know where git came from, where it’s going, and how to write tools to help shape that direction.

  • What’s in a git repo and how’s it get there?
  • How did we get to git? What’s the main-line history of Unix/Linux SCM tools and what insight does that give you into git?
  • What are branches, tags, symbolic refs, HEADS, and commit-ishes?
  • When git on one machine talks to git on another, what are they talking about?
  • What's a git subcommand and why does git have so many?
  • What might the future hold?
  • How can you do simple experiments to figure out what you don’t understand, even after the tutorial?

Register HERE

Speaker Description: 

Dr. Jeffrey Haemer has been doing source-code management (SCM) at Gogo Business Aviation, in Broomfield, Colorado since 2011. He's been doing commercial Unix and Linux work since 1983, when he helped make IBM’s PC/IX, the first Intel UNIX, at Interactve Systems Corporation, where they used SCCS.

He has done Unix and Linux education and training for organizations like Uniforum and the University of Colorado, and in places like Romania and Kuwait. He has served as Standards Representative for the Usenix Association. He is a contributing author of The Linux Administration Handbook and has published over a hundred articles and papers on software engineering for Unix and Linux.  

Event Category: