I've been using git for, what, 8 years now? You'd think I'd get it. But I constantly find myself confused by the complexities of git. So this past wow week, I went back and did some reading of the free Pro Git book. And I came to a conclusion. Much of my confusion can be eliminated if I keep these two simple rules in mind at all time:

  1. Each commit is a snapshot of your entire project.
  2. Most git operations (commit, merge, rebase, revert...) create new commits.

What if we thought of each commit as a complete, unique, individual creature? And what if those creatures had features that changed over generations? Would that help me, or anyone else, gain a better understanding of git?



I think it helped me. Click the button to see if it helps you. And by the way, if you are feeling down because you don't get git, at least know you are not alone.

XKCD git

Note (January 21, 2016): from time to time I'll update the timmocs, so far:

  • Added cherry picking (January 21, 2016)
  • Formatting improvements (January 23, 2016)