Skip to content
New this month 24 fresh C++, C#, F#, JavaScript, TypeScript and Lua courses just landed. Browse new releases Use code WELCOME10 for 10% off your first order · 14-day refund
Programming Languages All levels Save 41%

Git Mastery: Branching, Rebasing and Recovering from Anything

Understand Git as a graph of commits and never fear a mistake in a repository again.

Rated 5.0 out of 5 from 2 reviews 28 students

TE Created by Tom Eriksen

  • Last updated August 2026
  • English
  • 3h 24m of material
  • 26 lessons

What you will learn

8 concrete outcomes

Every bullet below is something you will have built, shipped or be able to explain by the time you finish the last lesson.

  • Explain Git as a commit graph with refs, and predict what any command will do
  • Branch, merge and rebase deliberately, with a clear rule for choosing between them
  • Resolve merge conflicts calmly, including conflicts during a rebase
  • Recover deleted branches, lost commits and botched rebases using the reflog
  • Use reset, restore and switch correctly instead of guessing with checkout
  • Clean up history with interactive rebase, fixup commits and autosquash
  • Find the commit that introduced a bug with git bisect, including automated runs
  • Set up a team workflow with conventional commits, protected branches and hooks

Course curriculum

6 modules · 26 lessons · 3h 24m of material

5 lessons running 40m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 lessons running 48m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

4 lessons running 30m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

5 lessons running 40m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

4 lessons running 32m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

2 lessons running 14m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 modules · 26 lessons

3h 24m total length

Requirements

Short list, and deliberately so. If you meet these you can start today.

  • You have used Git at least a little: clone, commit and push
  • Git 2.40 or newer installed and a repository you can experiment in

About this course

Almost everyone learns Git as a set of memorised commands, which works until something unexpected happens and there is no model to reason from. This course replaces the command list with the actual model: a directed graph of commits, plus a handful of pointers into it. Once that clicks, every command becomes predictable.

You start by looking inside the object database at blobs, trees, commits and refs, then watch how each everyday command moves pointers. Branching, merging and rebasing follow, with merge conflicts created and resolved deliberately, and a straight answer on the merge versus rebase argument based on what each does to history and to review.

The recovery module is the one people remember. Reflog to recover deleted branches and lost commits, reset in its three modes explained precisely, restore and switch instead of the overloaded checkout, cherry-pick, revert on published history, and rescuing a botched rebase. The final modules cover interactive rebase for cleaning history, bisect for finding the commit that broke something, worktrees, submodules with a warning, hooks, and a team workflow with conventional commits and protected branches.

Frequently asked questions

Still unsure about something? Write to misteryjj100@gmail.com and a human answers, usually the same working day.

The command line, because it maps directly to the model. Once you understand what commands do, any graphical client becomes easy, and the reverse is rarely true.

No. Everything works with local repositories, and the remote sections use plain remotes. The team workflow module notes GitHub and GitLab equivalents where they differ.

The object model, reflog recovery and bisect modules are where experienced users usually find gaps. Skip the first module if the object database is already familiar.

Checkout is handled on our provider's secure payment page. The moment your payment clears we email your personal access link and access code to the address you used at checkout, and the same link appears in your account library. There is nothing to install and nothing to wait for.

Email misteryjj100@gmail.com within 14 days of your purchase, quote your order number, and we refund the full amount to your original payment method. No form to fill in and no questions about how much of the course you watched.

What students say

Reviews are written by people who bought this course. We publish the critical ones too.

5.0

Rated 5.0 out of 5

Course rating · 2 reviews

Rating distribution

  • 5 stars 100%
  • 4 stars 0%
  • 3 stars 0%
  • 2 stars 0%
  • 1 star 0%
  • AM

    Aditya Menon

    Software engineer

    Jul 2026
    Rated 5.0 out of 5

    Teaching the object model first changes everything

    Once you have seen that a branch is a small file containing forty hex characters, most of Git's menace evaporates. I have stopped memorising command incantations and started asking what state I want the graph to be in, which turns out to be a much shorter route to the answer.
  • LB

    Louise Bergeron

    Full-stack developer

    Jan 2026
    Rated 5.0 out of 5

    reflog saved a day's work last week

    Hard reset on the wrong branch, remembered there was a recovery chapter, had it all back inside two minutes. Paid for itself on the spot. The section on reading a conflict properly is also far better than the usual advice to just pick a side.

Your instructor

TE

Tom Eriksen

Platform engineer and DevOps instructor

  • 219 students taught
  • 13 courses published
  • 4.8 instructor rating
  • Docker
  • Kubernetes
  • CI/CD
  • Testing and tooling

Tom has built delivery pipelines for teams of three and teams of three hundred, and openly prefers the smaller ones. He teaches Docker, Kubernetes and CI/CD outward from a single commit, so nothing ever appears by magic, and he treats the test suite as part of the pipeline rather than a separate subject. Every course includes a deliberate outage that you have to diagnose from logs and metrics before you can continue. He is a CNCF contributor and a reluctant but formidable YAML expert.

$17 USD $29 Discounted from $29. You save 41 percent.

One-time payment · lifetime access

The WisdomCharms dispatch

One useful email a week. No fluff, no spam.

New course releases, discount codes before anyone else, and a short, practical breakdown of one technique — a prompt pattern, a C++ idiom, a TypeScript trick — that you can use the same day.

  • Subscriber-only launch pricing
  • Unsubscribe in one click
  • We never sell your address

By subscribing you agree to our Privacy Policy. Questions? Write to misteryjj100@gmail.com.