You are here
Git, Got, Gotten
Jeffrey S. Haemer, Gogo Business Aviation
I tell my girlfriend I manage source code. If source code doesn’t do what I want, I fire it. Or maybe just don’t give it a good raise. I’ve been doing commercial UNIX and Linux since 1983. Back then, we used SCCS; now, it’s Git. In April 2015, Pearson released my video training, "Git Under the Hood LiveLessons," in which I delve into Git’s guts.
This tutorial will provide the right mental model to help you understand what the tool is actually doing. I field daily questions from folks who don’t have technical problems; they just have the wrong idea of what’s going on. Learning a collection of hundreds of magic Git incantations doesn’t help. Instead, you need to learn what’s actually going on.
Note: Bring a box on which you can launch a terminal window. Know how to install packages if you need to. Install Git and tree, and try them out. Real, virtual, cloud boxes should all work. So will Linux, UNIX, BSD, OS/X, or even msysGit on Windows. Bash, /bin/sh, ksh, zsh will all do. Csh, tcsh, CMD.COM, PowerShell? Probably not so much.
This tutorial is for folks starting to use Git who want to get off on the right foot, and folks who’ve been using it for a little while, yet too often find Git doing something they didn’t expect.
It is not an intro to how to use Git; rather, it’s an introduction to how Git works and why. Stop stumbling around in Git and start understanding it.
I want to let you walk away with context for Git. You’ll see why Git is designed the way it is, what in the design makes it fast, and how to think about what your Git commands are doing. You’ll also see:
- How Linux turned SHA1 sums into universal inode numbers
- Why technological change ushered in distributed version control
- How Git gets to be so fast
- Git Objects, Like UNIX/Linux/Mac OS Files, Have No Names.
- Git Is a Content-Addressable Filesystem
- Why Git Now? Historical Context and Some Predictions
- Branches and Tags: Both Flavors of Free