Why This Site?
I've been using Git since sometime in 2008. I spent the first year or so flailing about and not really understanding what I was doing. At some point, I realized something that helped me get a lot more comfortable using Git. And, I started to formalize a pattern of interaction with Git that enabled me to increase my understanding and confidence in working with some of Git's more dangerous features.
I tried helping other people learn how to use Git, but I wasn't all that successful. A friend of mine later told me that I'd told him something along the lines of "all Git commands are really just graph manipulation commands", but that didn't actually help him at all at the time.
So, in April 2011, I tried to put together what I knew into an hour-long talk.
This began life as a "Lunch and Learn" presentation to my coworkers. Based on the positive feedback I got from that, I then gave the talk again at Portland BarCamp 2011, and again later at Cascadia RubyConf 2011. My slides are on Heroku.
(There's video of that talk here, but keep in mind that I actually had zero warning that I was going to talk that day—the keynote speaker ran short, and the conference organizers asked if anybody there had had a talk proposal rejected, but had their slides ready to go. I raised my hand, and three minutes later I was up on stage.)
Based on encouraging feedback from both of those talks, I wanted to turn the talk into a series of screencasts... but I thought writing it out would actually be a bit easier, and might be more accessible. (I like screencasts for some things, but I also find it hard to set time aside to watch them.) If you'd like to see screencasts based on this material, let me know. My contact information is on the next page.
- About This Site
- Git Makes More Sense When You Understand X
- Example 1: Kent Beck
- Example 2: Git for Ages 4 and Up
- Example 3: Homeomorphic Endofunctors
- Example 4: LSD and Chainsaws
- The Internet Talks Back!
- Graph Theory
- Seven Bridges of Königsberg
- Places To Go, and Ways to Get There
- Nodes and Edges
- Attaching Labels to Nodes
- Attaching Labels to Edges
- Directed Versus Undirected Graphs
- Graphs and Git
- Visualizing Your Git Repository
- The Reference Reference
- Making Sense of the Display
- Garbage Collection
- Experimenting With Git
- References Make Commits Reachable
- My Humble Beginnings
- Branches as Savepoints
- Use Your Targeting Computer, Luke
- Testing Out Merges
- Rebase From the Ground Up
- Cherry-Picking Explained
- Using 'git cherry-pick' to Simulate 'git rebase'
- A Helpful Mnemonic for 'git rebase' Arguments
- The End