Mastering Git

Got the basics of Git down? Master it in just a few hours with this course.

Git Wizardry is closer than you think, and your instructor Chris will help you get there rapidly with this series of 11 videos and extensive notes.


Getting to Confident

This step will destroy any lingering anxiety you might have about losing data in Git. You'll learn four key techniques to increase your confidence, including a panic button to hit when things go awry.

Sign In with GitHub for Free Access

Managing History

"Who the heck changed this code, and why?" Git knows the answer—we'll show you how to find it. This step covers the many ways to slice and dice your Git history when you need answers, fast.

Sign In with GitHub for Free Access


Made a typo in a commit message? Forgot to do your work in a branch? Not to fear. Chris'll show you how to easily fix up the simple errors that are (sadly) a constant in the life of a professional developer.

Sign In with GitHub for Free Access

Crafting History With Rebase

You refactor your code, why not your Git history? It's time to take control and make that history squeaky clean. If you're tired of ugly merge commits, this step is definitely for you. Chris covers selective staging, cherry picking, and the many ways you can rebase.

Git Object Model

It's time to open the hood, pull back the covers, and participate in other revelation-related metaphors. This step does a deep dive into Git's internal object model. Madness, you say? Once you understand how Git is put together, your relationship with Git will permanently change for the better.

Object Model Operations

This is like part 2 of the previous step. Now that you understand the underlying objects in Git, it's time to connect the various Git commands you already know to what they do to those objects.

Customizing Git

While Git is awesomely powerful, it does have a number of UX rough edges. The good news is that Git is tremendously configurable. This step will teach you how to take a belt sander to the rough bits, and build a Git workflow that's smooth as butter.

GitHub and Remotes

Git really shines when you start to connect it to other things, like GitHub and Heroku. This step dives into useful command-line tools, aliases, and tips for managing these remote interactions.

Vim and Git

Git and Vim: two great tools, even better together. You're probably already writing your commit messages in Vim, but it's time to start diffing, blaming, fixing merge commits, and more. This was the lesson that Chris was born to write.

thoughtbot's Git Flow

You've done a lot of learning, now it's time to put it all together. This step will touch on everything covered so far in the process of developing a small feature on a Rails app. If you've ever wondered how a thoughbot developer uses Git in the real world, this one is for you.

Learning More

You now definitely know enough Git to be a confident, productive developer. But while we've covered a lot, you might someday need specialized knowledge on a narrow Git topic. These are our favorite resources to continue your learning.

Taught by
  • Chris Toomey

    Chris Toomey

    Chris is a big fan of Vim and the general Unix philosophy of sharp, focused tools. He started his career as a mechanical engineer but has always had a passion for programming, specifically web development. He has worked in Visual Basic and Python, but since finding Ruby and Rails, there’s been no looking back. Outside of coding, Chris is a fan of dinner with friends, skiing, and an embarrassingly eclectic cross section of music.