Training Catalog‎ > ‎

2-Day Git Essentials

Git Essentials


Length: 2 Days

Type: Hands-On

Target Audience: Software developers, testers, integrators, application support engineers


Summary:

From an esoteric Version Control System system developed by and for the Linux Kernel community, to the most dominant Version Control System on the planet in 10 years - Git requires no  introduction. However, hearing about git, and using it effectively in a team, across teams, and most importantly recovering from severe errors - requires discipline, deep understanding of Git internals, and proper training. This course will tie the knots, and make git both a life saver and a friend, rather than a tool you are forced to use and intimidated by.


Prerequisites: None.


Outline:

  • Version Control Systems - Overview

    • Motivation for Version Control Systems (VCS)

    • Basic operations and terminology

      • Project structures: Projects, trunks, branches, streams, repositories

      • Basic operations: Creating, deleting, updating, renaming, checking out, reverting, comparing, locking, tagging/labeling, merging, blaming

      • Synchronization constraints: Working in a team

    • Centralized Version Control Systems (CVCS)

      • Closed source vs. Open source solutions

      • Clearcase vs. Subversion (SVN) as an example

      • Drawbacks of CVCS

    • Centralized vs. Decentralized solutions

      • Motivation for Decentralized Version Control Systems (DVCS)

      • Basic operations of DVCS: init, clone, push, pull

      • Overview of Version Control Internals

      • DVCS: Pros and Cons

      • DVCS use case discussion: Git and The Linux Kernel

  • Git overview

    • History

    • Installation and setup (Linux, Windows, OSX)

    • Local and remote configuration

    • IDE integration

  • Git user essentials

    • 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

  • Git internals and plumbing commands

    • Understanding git structure

    • Low level plumbing commands

    • Recovering from user made disasters

  • Git repository administration and Continuous Integration strategy

    • Bare repositories (git init --bare)

    • Git branch strategies, best practices

    • Git hooks

    • Multi-project git

      • Working with repo [optional]

    • Git code review mechanisms

      • Working with gerrit [optional]

    • Continuous Integration strategy

      • Working with Jenkins [optional]

    • Multi project git

Comments