Git Training Curriculum

Most Git tutorials
teach you to memorize incantations.

certuvia teaches Git differently. Every lab starts with a realistic scenario โ€” you discover why the command exists before you touch it. A live Linux environment with real Git runs in your browser. All 71 labs are available; browse the complete curriculum below.

Browse Labs
71Total Labs
71Available Now
100%In-Browser VM
student@lab:~$EXAMPLE
student@lab:~$ git log --oneline -3
a3f9c2e fix: handle empty cart on checkout
8b1d4aa feat: add discount code field
e02cc71 initial commit
student@lab:~$ git status
On branch main
nothing to commit, working tree clean
student@lab:~$ โ–Š

Everything in one viewport

Lab steps on the left, terminal on the right. No tab-switching, no copy-pasting between windows. Complete each objective and watch the checkmarks fill in.

71
Labs
71
Available Now
100%
Scenario-First

3 certificates. 71 labs. One clear path.

๐ŸŸข1 โ€”Git Foundations

"I can work alone, track my own work, and know what's happening at all times."

5 blocksยท20 labsยท6โ€“8 hrs
๐Ÿ”ต2 โ€”Git Collaborator

"I can join a team repo, work on branches, resolve conflicts, and ship through pull requests."

6 blocksยท25 labsยท8โ€“10 hrs
๐ŸŸฃ3 โ€”Git Professional

"I can rewrite history safely, debug with bisect and blame, and recover from anything."

6 blocksยท26 labsยท8โ€“10 hrs
Block 1.1

Starting From Zero

You are starting a personal project โ€” a recipe collection. You want Git to track your work so you can look back later at what changed and why.

Block 1.2

The Daily Work Loop

Your recipe project grows. Over one afternoon you edit three files. You want your Git history to be readable, not just a dump of "updated stuff."

Block 1.3

Branches: Working Without Fear

You want to experiment with a spicy new section of your recipe book without risking the existing work. Branches are your sandbox.

Block 1.4

Your Safety Net: Undoing Mistakes

You've made a series of mistakes. Each mission is a different kind of mistake with a different kind of fix. None of them are catastrophic โ€” once you know the tools.

Block 1.5

Connecting to the World

You want to back up your recipe book online and share it with a friend. You set up a remote, push your work, and understand what's actually happening when you do.

Block 2.1

Joining an Existing Project

You're joining a team mid-project. The repo exists. You need to understand its state, set yourself up, and start contributing without stepping on anyone.

Block 2.2

The Feature Branch Workflow

Your team has a shared main branch that must always be deployable. You develop everything on feature branches.

Block 2.3

Merging: Understanding What Git Actually Does

The team's branches diverge in different ways. Learn to predict and influence how Git will integrate them.

Block 2.4

Conflict Resolution

Two developers changed the same file. Git can't auto-merge. Now what?

๐ŸšงLab 2.4.115 min

Reading the Conflict Markers

A real, genuine conflict in two files. Decode exactly what each side changed, directly from the raw markers.

Start lesson โ†’
โœ๏ธLab 2.4.215 min

Resolving Your First Conflict

Both real conflicts, resolved by hand. git status confirms exactly what's left, every step of the way.

Start lesson โ†’
๐Ÿ”Lab 2.4.315 min

Using a Merge Tool

No real GUI here โ€” but the exact same base/ours/theirs view, using nothing but plain, real git commands.

Start lesson โ†’
๐Ÿ”Lab 2.4.420 min

Conflict During Rebase

A real conflict, mid-rebase โ€” resolved one commit at a time. Then a real escape hatch when you'd rather just stop.

Start lesson โ†’
๐Ÿ›ก๏ธLab 2.4.515 min

Preventing Conflicts

This block's own real conflicts, reviewed for the patterns that caused them โ€” prevention beats resolution.

Start lesson โ†’
Block 2.5

Pull Requests: The Team Interface

No GitHub in this sandbox โ€” so this block teaches the real git mechanics a PR interface is built on top of.

Block 2.6

Undoing Safely in Shared Repositories

Something went wrong on a branch others are using. Fix it without breaking their work.

Block 3.1

History Surgery: Interactive Rebase

Your branch has 11 commits including "WIP", "asdf", and "really trying to fix this now." Before opening a PR, clean it up.

๐ŸงนLab 3.1.120 min

Squash and Fixup: Combining Related Commits

Four real "WIP" commits. One meaningful commit. A real, scripted interactive rebase makes it happen.

Start lesson โ†’
โœ‚๏ธLab 3.1.220 min

Reordering and Splitting Commits

A real, unrelated fix accidentally rode along in the wrong commit. Split it out, then reorder two others.

Start lesson โ†’
๐Ÿ“Lab 3.1.315 min

Editing Commit Messages Deeper in History

Commit 4 of 6 has the wrong ticket number. Fix it without touching anything else โ€” except every hash after it.

Start lesson โ†’
๐Ÿ“œLab 3.1.415 min

The Team Contract: When Not to Rebase

This is about discipline, not commands. A real, written policy, landed the normal way.

Start lesson โ†’
๐ŸŒณLab 3.1.520 min

Rebase Onto: Moving a Branch to a New Base

A real branch, accidentally built on a stale one. Transplant it directly onto the real correct base.

Start lesson โ†’
Block 3.2

Surgical Commits: Cherry-pick and Patch

Production is broken. The fix already exists on another branch. You need exactly that one commit.

Block 3.3

Debugging with Git: Finding What Broke and When

check-times.sh started failing. You don't know which of the last 50 commits broke it.

Block 3.4

Advanced Recovery: Nothing Is Ever Truly Lost

A series of real mistakes. In every single case, the real work is still there.

Block 3.5

Repository Structure for Teams

The project has grown. Structure โ€” tags, stash, submodules โ€” stops being optional.

Block 3.6

Automation and Team Standards

The same real mistakes, over and over. Time to automate the prevention.

๐ŸชLab 3.6.115 min

Commit-msg Hook: Enforcing Message Format

A real commit, genuinely rejected for missing a ticket reference. Then genuinely accepted.

Start lesson โ†’
๐Ÿ›‘Lab 3.6.215 min

Pre-commit Hook: Preventing Common Mistakes

A real staged file with a stray TODO. A real .env file. Both genuinely blocked before they land.

Start lesson โ†’
๐Ÿ“Lab 3.6.315 min

.gitattributes: Line Endings and Diff Drivers

A real CRLF file, already committed. Normalized to LF for good, confirmed byte by byte.

Start lesson โ†’
โšกLab 3.6.415 min

Git Aliases for Daily Productivity

Five real, personal aliases. Each one genuinely tested, not just configured.

Start lesson โ†’
๐Ÿš€Lab 3.6.520 min

CI/CD Integration: Git as the Source of Truth

A real pipeline spec, written and committed. Every git event mapped to a real automated response.

Start lesson โ†’