Git Version Control Tutorials

Learn Git the right way with courses and articles.

Video Courses

Professional video courses on Git to help you learn faster.


Up and Running with Git

Have you been unsure about adding version control to your web design and development workflow? Do you already use it but aren't sure exactly what you're doing and need a refresher? This course is for you. Get the foothold you need to start using Git with your web projects.

Get the course

Git: The Next Steps

This course provides you the information you need to take the next step with Git. You know the basics, now learn the power moves.

Get the course


Git: Under the Hood

Have you ever taken something apart in order to find out how it works? It helps you better understand the tool (or toy, if you were like me as a child). We can do the same with Git, too. We’re going to dig in to some theory behind Git and understand how some parts of Git work. We’ll get our hands dirty and a little greasy under the hood but at the end we’ll have a solid of understanding of just how Git works.

Get the course


Free, focused lessons on Git.

Using git-archive to export files

Ryan walks through how to use the git-archive command to export the files from a Git repository into a ZIP file.

Watch the Lesson

Using Git in Sublime Text

For this lesson we'll learn how to use Git version control right inside of Sublime Text 3 using the Git Savvy package.

Watch the Lesson

Git Aliases in Your Bash Profile

Learn how to add system-wide Git aliases to your .bash_profile.

Watch the Lesson

Git vs SVN

Let's look at the differences between Git and SVN. This isn't a video about which is better, just showing them side-by-side. If you are moving from SVN to Git, this free lesson will help you get your bearings.

Watch the Lesson

Git Log with Graph

Git-log is a powerful command in Git. There are so many ways you can slice, dice, and display your repository history. Here's one way that gives a nice, compact overview of the commits while also showing branches and merges.

Watch the Lesson

Plucking Commits with git-cherry-pick

Learn how to use the git-cherry-pick command to pluck a single commit out of a repository history and apply it to a different branch.

Watch the Lesson

Git How-to Articles

Articles and tutorials to supplement your video courses.

How to Create Git Aliases

A Git alias, otherwise known as a shortcut, allows to place a simple command in front of a longer or less memorable command. Learn how to speed up your work using Git aliases for your most commonly used Git commands.

Saving Changes with Git Stash

In the Basics of Git course, I was in the middle of making some changes to the homepage of our sample site when a another change request came in. I needed to quickly save--or stash away--my changes and then apply them back to the repository later, after my other work was complete.

Search Git Commits with grep

A log of commits in Git (retrieved using git-log) can be filtered and changed to output only the commits (or types of commits) that we want to see.

Two Types of Git Tags

There are types of tags in Git: annotated and non-annotated. The names say it all: with one type we tag with an annotation on what the tag is about, while the other is tag without annotation. Both, however, are tags and mark a point of time in the life of the repository.

Why You Shouldn’t Use Git Fast Forward

I've been using the Git Flow branching model for a while (but at times not very strict). Maybe because it's buried in the original article but I didn't realize until now that there's a very good reason to not allow fast-forwards when merging branches.

Reverting a Git Merge

Sometimes you get in a situation--and this is a no-judgement zone, we've all been there--where you merge branches and you messed up and need to undo the merge because, well, because your co-workers are kind of mad you broke the project. Let's say that happened. How do you revert a merge?

Preventing Fast-Forward Git Merges

I've written about why you shouldn't use fast forward Git merges before. In short, using non-fast forward merges keeps your history complete and intact. Using the `--no-ff` option will prevent you from merging branches and having the child branch history get the boot.

Git Aliases in .bash_profile

This 7 minute video is an excerpt from the OS X Shell Tricks course on how to add system-wide Git aliases to your bash_profile.

Understanding Git Log

Git logs allow you to review and read a history of everything that happens to a repository. The history is built using `git-log`, a simple tool with a ton of options for displaying commit history.

What are our customers saying?

"Just purchased your Flexible Twig course. Love it!"
Tyler Morrison
"Been enjoying @mijingo 's Learning Craft video tutorials. Feeling like I've got a good basic understanding of #craftcms Very impressive"
Laura Montgomery
"I bought your Craft Starter Pack a year and a half ago. Worth every dollar. In fact, I would've paid twice as much for it, because you saved me so much time."
Timothy Ingram
"Ben's knowledge of Craft combined with his relaxed and informal teaching style makes for a great learning experience."
Steve Abraham
"Ben puts a lot of thought into his teaching approach and has the ability to explain complex concepts in a way that just make sense"
Gareth Redfern
"Ben is great at taking a complex subject and breaking it down in a way that you can wrap your mind around. I thought that plugin development was something I would never understand, and happily Ben proved me wrong!"
Jonathan Melville
"I really appreciate all the videos and writing you have done. Your work has given me a jump start on my front end development business."
Shan Ricciardi