Welcome to the GitHub Learning site

Here we have tried to compile the best online learning Git resource available. There are a number of articles and screencasts, written and arranged to try to make learning Git as quick and easy as possible.

This site is a work in progress.

10 Minute Crash Course
"Why Git" in 5 Minutes


Beginner

Introduction To Git

What Git is, why you would want to use it and where to get it and learn about it.

Setup and Initialization

Setup your Git environment, then create a new Git repository and clone an existing one.

Normal Workflow

Syncronize with a remote repository, make changes, then stage and commit them.

Basic Branching and Merging

Create and work on topic and long running branches, merge between them and delete them.

Git Tagging

Create signed, unsigned or lightweight tags to permanantly mark important points in your project history.

Git Log

Browse your project history, find specific commits and visualize the branching and merging actions.

Git Diff

Show differences between different versions of your projects or specific files within your project.

Intermediate

Distributed Git

Fetch, merge, pull and push between multiple remote repositories.

Rebasing

Replay changes from one branch onto another branch to preserve a linear history.

Stashing

Temporarily save changes to your working directory and staging area without having to commit, then reapply the changes later.

Interactive Adding

Stage and unstage changes to files or partial files with an interactive Git tool.

Undoing

Revert, unmodify or unstage a file or project state at any point.

Amending Commits

Change the latest commit message, or redo the last commit by adding or removing files from it.

Interactive Rebasing

Rebase multiple files interactively, squashing, reordering or amending commits in between.

Customizing Git

Setup aliases for common commands and other personal options in Git - autocompletion, bash branch, colors and more.

Advanced

Filter Branch

Modify large sections of your commit history at once, changing emails, names or files globally.

Maintaining Git

Learn the fsck and gc commands to diagnose problems and keep your repository small.

The Git Reflog

Browse the history of your local references even if they're not referenced anywhere else anymore.

Data Recovery

Find lost commits or branches and restore them, or recover from partial database corruption.

Git Hooks

Learn the client and server side pre and post action hooks and some useful example scripts to use with them.

Revision Selection

Selecting individual commits or ranges of commits using helpful Git shorthands.

Git Internals

Explore the internal workings of Git - the different object types and how to view the raw data via several useful plumbing commands.

Git Submodules

Submodule usage and other tips for keeping subprojects in your Git repository.

Special Interest

Git and Windows - General

Install and use Git on a Windows environment using the default mSysGit tools.

Git and Windows - Extensions

Installing and using the Git Extensions shell extensions tools on Windows.

Git and Subversion

Using the git-svn client with a Subversion server. Specifically for existing SVN users, how Git is a better Subversion client than Subversion.

Migrating from Subversion

Ready to move your project from Subversion? A few ways to do the migration, from hosted services to really custom methods.

Git and Textmate

Using Git and GitHub from Textmate using the TM Git bundle.

Git and Capistrano

Deploying Git projects using the Capistrano deployment tool, including how to deploy from GitHub.