I’m in the process of putting together a basic one-day git training course for both our consulting team and one of our friendly clients at the moment.
Even though I’ve been tinkering with Git for ages, I originally learned Git properly by methodically working through Tim McCullough and Tim Berglund’s awesome video series which I would recommend them to anyone keen to get a good quickstart into the space. I’m still no expert, but I’m now pretty solid on all the basics, and know enough to take others through the same.
I appreciate not everyone is into screencasts, so I thought I’d also make some notes about some great free and commercial resources available to level up your Git skills.
First of all, Scott Chacon’s Pro Git book is free, and awesome! You can’t go past the price, and it’s got really great coverage of all the common things that you are likely to want to do in day-to-day Git. I found it wasn’t the “Deep Dive” that I was after for the next level (times when you really want the back story of what Git is doing under the covers).
If you want to go nuclear on how Git works, there is no better book to own than Version Control with Git, 2nd Edition. This book is all sorts of amazing when it comes to reallly understanding how things work under the cover. I’m still working my way through it, but it’s a seriously well put together book. Just go get it!
I’ve also got an older Pragmatic Programmer title on Pragmatic Version Control Using Git, which is a nice lightweight intro to Git, but is showing its age now, and you’re better off Levelling up to the Git book above.
You need to know about Matt & Tim’s awesome Open Source Teaching Materials over on the GitHub Teaching site. And you definitely want to checkout Ted Nalied’s amazing Git Core Concepts slideware (which introduced me to the reflog and gave me a lot of confidence!).
When I finish putting together my own one-day courseware stuff, I’ll get it up somewhere on a Git repo to share one layman’s attempt at putting together a learning plan for developers new to Git!