This is the first of several posts exploring how git works under the hood. While lots of programmers are familiar with using git, I wanted to do a deep dive into how git is implemented. git employs many clever ideas to optimize common version control operations. I'm a big fan of trying to understand software by playing around with it rather than reading lots of documentation. To that end, I've wri