Getting More out of Git

Short Form


Git has a complicated UI, but tremendous power once you understand the simple data model at its core. Learn how Git thinks and some versatile, less-well-known features that give you new insight into the code you use and help you better collaborate on code you write.


Some source-control systems are simple to start using on the surface, but conceal great complexity underneath. Git is the opposite: there’s far too much complexity in the interface, but it’s all operating on a simple and comprehensible core data structure. That gives a very high reward-to-effort ratio to learning the data model cold, so we’ll start there.

Then we’ll see how to

  • understand just how, when, and crucially why that bit of code got to be the way it is, with Git’s powerful history-studying features;
  • automatically zero in on whatever commit introduced a bug, with bisect;
  • prepare your changes as a sequence of neat, logically arranged, well-described commits — the kind upstream maintainers want to review and merge — without going crazy or stepping outside the protected walls of version control, thanks to rebase; and
  • take advantage of Git’s state-of-the-art functionality for merge conflict resolution.

Speaking experience

I've spoken at ConFoo 2013 (in Montreal), at Ruby user groups on both coasts, at several academic conferences when I was a graduate student, and at a number of smaller occasions.

I've used Git since 2008, taught it at beginner, intermediate, and advanced levels to many friends and coworkers, and contributed occasional patches to Git and its documentation since 2009.

Video of my talk at BostonRB is online:
Slides are in the video, or at

For other talks, see slides:

on Haskell, at MIT (

on a virtualization system I'd coauthored, at MIT (

on Cython and PyPy, at ConFoo (

I haven't yet given this talk anywhere else.


  • Me cropped 50pc

    Greg Price

    Solano Labs


    Greg Price is a software engineer bringing fast, automated continuous integration to everyone with Solano Labs. Previously he worked at Quora, and helped Ksplice make rebooting obsolete.

    Greg once thought a career making theorems instead of code would be fun, but after two years of a few good theorems and much more code snuck into off-hours, he decided to run with it. He loves Python in practice, Haskell in principle, and creating code that communicates its meaning clearly to both computers and people and solves the right problem well.