PyCon 2016 in Portland, Or
hills next to breadcrumb illustration

Saturday 9 a.m.–12:20 p.m.

Get Started with Git

David Baumgold

Audience level:


You want to learn Git, but you don't know where to start. Or maybe you're already using Git, but you know you're not using it to its full potential. With this tutorial, you'll level up from Git novice to Git wizard, learning how to master your version control system, travel through time, and change history.


In this tutorial, we'll start from zero and build your knowledge step-by-step about how to use Git effectively. We'll start with the basics of creating a repository and making commits, and move on to branching, merging, resolving conflicts, and generally moving commits around. Next, we'll cover the most popular options for hosting repositories online (GitHub, GitLab, and BitBucket), and how to interact with other peoples' Git repos on those websites. Then we'll start getting into more advanced topics. You'll learn about rebase, and its awesome power to travel through time and re-write the history of your project. You'll also learn how to wield that power with restraint and recover from your mistakes, so that you can use it safely and confidently. Once you've learned how to rebase, you'll be able to split and combine commits, fix up poorly-written commit messages, remove passwords from your history before they were ever mistakenly committed, or even make it look like you wrote perfect code the *first* time. You'll also learn how to be more productive with Git by integrating it into your everyday development tools, like your text editor and your shell. (Being able to constantly see what branch you're working on is a huge help!) You'll also learn how to streamline your workflow by using Git's event hooks to run arbitrary scripts for you, and how to take advantage of the integrations provided by your online host of choice. If there's time, we'll explore some of the APIs and webhooks provided by GitHub, so that you can kick off arbitrary processes simply by committing (or commenting on a pull request).

Student Handout

No handouts have been provided yet for this tutorial