These days almost all developers use Git on a daily basis. Many of us learnt a few relevant commands by rote, but a deep understanding of what it is actually doing seems to be a rarity. Git’s man pages frequently lie about what is really going on, and the majority of third-party documentation is similarly misleading.
This isn’t a "how to" talk on Git. I won’t give you a list of commands to learn. There won’t be any advice on merging vs. rebasing, or on continuous integration. The goal of this talk is to give a clear, factual insight into what the various Git commands actually do, and what is actually being stored in the commit graph. Afterwards, you may be able to make sense of a Git problem more easily, but I’ll be focusing on understanding the tool, not on the best way to use it.