This is day 3 of my Git Tips and Tricks Advent Calendar. If you want to see the whole list of tips as they're published, see the index.
Git is… weird. If you grew up with centralized version control systems, then moving to a distributed version control system is weird enough. But Git levels that up with concepts like the "detached HEAD state", commands like "merge-subtree" and error messages like "did you run git update-server-info on the server?"
So I'm very sympathetic to new users being frustrated by Git.
One of the things that I've always pointed new Git users to is "Oh Shit, Git!". Katie Sylor-Miller put together a great web page that describes how to get out of some of the problems that you have with Git. (Those "oh shit!" moments.) And she does it in plain English, in a way that's easy to follow.
But recently, "Oh Shit, Git!" got even better: Julia Evans has gotten involved. You might know Julia from some of her clever zines that dive deep into some tech like networking or Linux debugging tools in - you guessed it - plain English.
So, obviously, this was a good match, and together, Katie and Julia have created the Oh Shit, Git! zine. It takes the content from the original "Oh Shit, Git!" site about how to get out of trouble when using Git and adds in some extra goodness about how Git works including hashing and object creation, the graph and branches.
I highly recommend it for people getting started with Git.