Git stops feeling like magic once you build one. I wrote a small Git in Python that stores objects in Git’s real format, then checked it against real Git. This post walks through blobs, trees, commits and branches, with real output and the full code.