User Tools

Site Tools


Introduction to Git (1 day)

This course is a fairly intense introduction to the Git version control system, beginning with a brief historical overview of Git, then launching quickly into basic usage, cloning Git repositories, the basic local Git workflow, undoing both local and committed changes, tags, branches, merging, stashing and quite a bit more.

Course outline

The course will cover (but is definitely not limited to):

  • A brief history of Git
  • Basic Git configuration
  • The underlying architecture of Git – the “object store”
  • Creating a new Git repository
  • The “index,” and why you need to know how it works
  • Committing your work – the right way and the wrong way
  • Tagging your work, and why that matters
  • Selectively displaying your history with “git log”
  • The “detached HEAD” state – not as bad as it sounds
  • Using “git diff” to compare “tree-ish objects”
  • Reverting and cherry-picking commits
  • Branching and merging
  • Undoing/redoing your work (AKA “changing your mind”)
  • Rebasing your local work to stay up to date
  • Stashing your uncommitted work, and getting it back later
  • Defining Git “aliases”

Class infrastructure and material

Students will be required to bring their own laptop with a suitably current version of Git in order to reproduce the hands-on demonstrations. All students will receive, well ahead of time, instructions for how to properly prepare their systems, including some sample Git repositories to download.

In addition, all registered students will receive an e-copy of the O'Reilly book “Version Control with Git”, in both DRM-free PDF and DRM-free ePub formats.


Because this is an introductory course, students are not required to have worked with Git before, but previous experience with Git (or any other version control system, for that matter) is always useful.

Virtual delivery

This course has been delivered several times online, and is available for virtual delivery.

introduction_to_git.txt · Last modified: 2018/09/22 14:48 by rpjday