Git Training Course

Course Summary

What differentiates mankind from animals is the use of tools. What differentiates a great developer from a mediocre developer is the types of tools used. Git is taking the development community by storm as the new de facto standard for versioning source code.

In this class, you will learn how to use git for your every day software development process. We'll explain the best practices so that by the end of the training you are dangerous enough to use it for your everyday development.

 

Duration [top]

1 day.

Objectives [top]

The goal of this class is for you to get super comfortable with Git. We want you to master the most common tasks, so you can use them every day without much friction, so that they become second nature. We want you to also be comfortable with advanced features so, when needed, you can look them up and get it done.

Audience [top]

This course is for any software developer, regardless if you work on a team of 1 or 100. If you write software, you need to know Git.

Prerequisites [top]

None. Ok, you gotta be comfortable with command-line, but that's about it. It doesn't matter if you have prior experience in SVN, RCS, CVS, SCCS, ClearCase, shoe box, or some other revision control system. Granted, the less you know, the better, but unlearning ain't easy.

Outline [top]

Overview of Version Control Systems (VCS)

  • Motivation for VCS
  • Basic operations (create, checkout, add, status, commit, log, diff, update, move/rename, delete, lock, revert, tag, branch, merge)

Centralized (CVCS) versus distributed (DVCS) version control

  • Motivation for DVCS
  • More basic operations of DVCS (clone, push, pull)
  • Overview of Version Control Internals
  • Advantages
  • Weaknesses

Overview of Git

  • Motivation and history of Git
  • Overview of Git operations
  • Getting started with Git (installation, setup)
  • Local configuration

Git by Example

  • Creating a Git repository on a shared server (git init)
  • Managing access control
  • Cloning a remote repository (git clone)
  • Adding files to a local Git repository (git add)
  • Checking for status of files in a local Git repository (git status)
  • Committing files to a local Git repository (git commit)
  • Pushing changes in a local git repository to a remote Git repository (git push)
  • Pulling files from a remote Git repository (git pull)
  • Looking at commit logs/history (git log)
  • Looking at file changes (git diff)
  • Merging files and dealing with conflicts (on git pull)
  • Moving and renaming files (git mv)
  • Deleting files (git rm)
  • Reverting files to their previous state (git checkout)
  • Tagging files (git tag)
  • Creating using branches (git checkout -b branch)
  • Fetching branches (git fetch)
  • Merging files across branches (git merge)
  • Dealing with conflicts on merge
  • Summary