This list is culled from a thread where people were asking for useful resources when learning Git. A lot of useful recommendations were made, so I’m summarising them here (for my own benefit as much as anything):
- First aid site for when you have git problems! http://firstaidgit.io/#/
- Interactive tutorial for people with short attention spans: https://try.github.io/levels/1/challenges/1
- Interactive codecademy course on the basics of Git: https://www.codecademy.com/learn/learn-git
- General interactive git tool: http://onlywei.github.io/explain-git-with-d3
- The Git Parable http://tom.preston-werner.com/2009/05/19/the-git-parable.html explains why things are the way they are.
- An interactive tool to learn git branching: http://learngitbranching.js.org
- In-depth article explaining the internals of Git: https://codewords.recurse.com/issues/two/git-from-the-inside-out
- Git magic (“Rather than go into details, we provide rough instructions for particular effects. After repeated use, gradually you will understand how each trick works, and how to tailor the recipes for your needs.”): http://www-cs-students.stanford.edu/~blynn/gitmagic/
- The Ultimate GIT 5-day Challenge | Udemy: https://www.udemy.com/the-ultimate-git-5-day-challenge/
- Git for ages 4 and up (video): https://www.youtube.com/watch?v=1ffBJ4sVUb4
- Pretty comprehensive free course for git and github: https://de.udacity.com/course/how-to-use-git-and-github–ud775/
- Common git problems and how to fix them: https://www.codementor.io/git/tutorial/10-common-git-problems-fix
- Jessica Kerr’s “Git Happens” talk: https://www.youtube.com/watch?v=yCh6TSLIQBQ
- Git Internals: Plumbing and Porcelain chapter of the Pro Git book: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain
- Interactive guide to some less obvious workflows: GitHub – lauraionescu/git_what: The not-so-every day workflow
- Video about the internals of git, by Scott Chacon from Github: https://www.youtube.com/watch?v=ZDR433b0HJY
- Git flight rules (a guide for what to do when things go wrong): https://github.com/k88hudson/git-flight-rules
I ran a git workshop for some devs earlier this year – I created a repo, a bunch of exercises and some top tips. Everything you need to find your way around should be in the readme: https://github.com/claresudbery/Git-Playground
I find it very helpful to understand what the definition of a branch is: it’s just a commit, which defines the current head of the branch …and that allows you to explain the concept of “detached head”.
I would also encourage people to dig a little into the gitconfig folder and understand what diffs and commit IDs are all about.