Git is rapidly taking over the development workplace. One of the downsides of high-level tools is that they can hide the details of what is happening under the hood; when things go wrong it can be hard to understand why git behaves the way it does. But at its core Git consists of a few simple concepts that, when understood, make it a much more intuitive tool. This talk introduces these core Git concepts and uses them to clarify some examples of seemingly counterintuitive behaviour. It also introduces some of Git's less-known features and tricks that are useful to have in your arsenal.