---
layout: default
---

<div class="span-21" id="welcome">
  <h1>Welcome to the GitHub Learning site</h1>
  <p>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.</p>
  <p>This site is a work in progress.</p>
</div>

<div class="span-7" id="start">
  <div class="button red">
    <a href="p/intro.html">Start the Full Course</a>
  </div>
</div>

<div class="span-7" id="how">
  <div class="button green">
    10 Minute Crash Course
  </div>
</div>

<div class="span-7 last" id="why">
  <div class="button blue">
    "Why Git" in 5 Minutes
  </div>
</div>

<div class="span-21 last">
  <br clear="both"/>
  <hr/>
</div>

<div class="span-5"><h2>Beginner</h2><div class='episode'><b><a href="p/intro.html">Introduction To Git</a></b><p>What Git is, why you would want to use it and where to get it and learn about it.</p></div><div class='episode'><b><a href="p/setup.html">Setup and Initialization</a></b><p>Setup your Git environment, then create a new Git repository and clone an existing one.</p></div><div class='episode'><b><a href="p/normal.html">Normal Workflow</a></b><p>Syncronize with a remote repository, make changes, then stage and commit them.</p></div><div class='episode'><b><a href="p/branching.html">Basic Branching and Merging</a></b><p>Create and work on topic and long running branches, merge between them and delete them.</p></div><div class='episode'><b><a href="p/tagging.html">Git Tagging</a></b><p>Create signed, unsigned or lightweight tags to permanantly mark important points in your project history.</p></div><div class='episode'><b><a href="p/log.html">Git Log</a></b><p>Browse your project history, find specific commits and visualize the branching and merging actions.</p></div><div class='episode'><b><a href="p/diff.html">Git Diff</a></b><p>Show differences between different versions of your projects or specific files within your project.</p></div></div><div class="span-5"><h2>Intermediate</h2><div class='episode'><b>Distributed Git</b><p>Fetch, merge, pull and push between multiple remote repositories.</p></div><div class='episode'><b><a href="p/rebasing.html">Rebasing</a></b><p>Replay changes from one branch onto another branch to preserve a linear history.</p></div><div class='episode'><b>Stashing</b><p>Temporarily save changes to your working directory and staging area without having to commit, then reapply the changes later.</p></div><div class='episode'><b>Interactive Adding</b><p>Stage and unstage changes to files or partial files with an interactive Git tool.</p></div><div class='episode'><b><a href="p/undoing.html">Undoing</a></b><p>Revert, unmodify or unstage a file or project state at any point.</p></div><div class='episode'><b>Amending Commits</b><p>Change the latest commit message, or redo the last commit by adding or removing files from it.</p></div><div class='episode'><b>Interactive Rebasing</b><p>Rebase multiple files interactively, squashing, reordering or amending commits in between.</p></div><div class='episode'><b>Customizing Git</b><p>Setup aliases for common commands and other personal options in Git - autocompletion, bash branch, colors and more.</p></div></div><div class="span-5"><h2>Advanced</h2><div class='episode'><b>Filter Branch</b><p>Modify large sections of your commit history at once, changing emails, names or files globally.</p></div><div class='episode'><b>Maintaining Git</b><p>Learn the fsck and gc commands to diagnose problems and keep your repository small.</p></div><div class='episode'><b>The Git Reflog</b><p>Browse the history of your local references even if they're not referenced anywhere else anymore.</p></div><div class='episode'><b>Data Recovery</b><p>Find lost commits or branches and restore them, or recover from partial database corruption.</p></div><div class='episode'><b>Git Hooks</b><p>Learn the client and server side pre and post action hooks and some useful example scripts to use with them.</p></div><div class='episode'><b>Revision Selection</b><p>Selecting individual commits or ranges of commits using helpful Git shorthands.</p></div><div class='episode'><b>Git Internals</b><p>Explore the internal workings of Git - the different object types and how to view the raw data via several useful plumbing commands.</p></div><div class='episode'><b>Git Submodules</b><p>Submodule usage and other tips for keeping subprojects in your Git repository.</p></div></div><div class="span-6 last"><h2>Special Interest</h2><div class='episode'><b>Git and Windows - General</b><p>Install and use Git on a Windows environment using the default mSysGit tools.</p></div><div class='episode'><b>Git and Windows - Extensions</b><p>Installing and using the Git Extensions shell extensions tools on Windows.</p></div><div class='episode'><b><a href="p/git-svn.html">Git and Subversion</a></b><p>Using the git-svn client with a Subversion server.  Specifically for existing SVN users, how Git is a better Subversion client than Subversion.</p></div><div class='episode'><b>Migrating from Subversion</b><p>Ready to move your project from Subversion?  A few ways to do the migration, from hosted services to really custom methods.</p></div><div class='episode'><b>Git and Textmate</b><p>Using Git and GitHub from Textmate using the TM Git bundle.</p></div><div class='episode'><b>Git and Capistrano</b><p>Deploying Git projects using the Capistrano deployment tool, including how to deploy from GitHub.</p></div></div>
