Advanced Git Internals & Distributed Workflows
Object Storage, DAGs, Interactive Rebase & Bisecting
6 modules, 28 lessons: How Git Thinks; Everyday Git; Branches, HEAD And History; Remotes; Working With Other People; Rewriting History, Tags And Workflows.
Beginner · 2 hours · 28 lessons · 123 labs
Who it is for
Beginner level.
For anyone who keeps work in Git, or soon will: developers, testers, technical writers and operations staff who want to know what each command really does.
What you don't need yet:
- No programming experience: you work with Git commands, not code
- No GitHub account for graded labs: they use a local repository
- You don't need to understand Git's insides yet: the course opens them
What helps:
- Having tried git commit and git push, even once
- Comfort typing commands in a terminal
Before you start:
- Familiarity with git commit and push
Take first:
- Bash Scripting & Command Line Automation — Beginner
- Linux Fundamentals & Systems Administration — Beginner
Take next:
- Ansible Configuration Management at Scale — Intermediate
- Continuous Integration & Continuous Delivery Pipelines — Intermediate
- GitHub Actions (GH-200) Exam Prep — Intermediate
Learning paths:
Nobody needs to know everything before they start. Each course builds on the one before, so a learning path takes you there step by step.
Labs
123 labs, 101 of them graded: you write the code, it runs, and graded labs check the result. The outline lists each lesson's labs.
What is free
Start free: First 4 lessons free with an account. Pro: Every course, lab, handbook, practice exam and certificate.
- Pro monthly — $29 a month. Every course, lab, handbook, practice exam and certificate
- Pro yearly — $249 a year. Every course, lab, handbook, practice exam and certificate
Course outline
How Git Thinks
- Why Version Control, And Why Git Won (5 labs): You can say what a version control system stores, why Git's distributed copy makes history a local question, and what Git's integrity claim rests on.
- Installing Git, And Telling It Who You Are (6 labs): You will be able to install git, set the identity it writes into commits, and say which config file an answer came from.
- A Repository Is A Folder With A Memory (7 labs): You can turn any directory into a repository with git init, name what lives inside the hidden .git directory, and prove that the repository is that directory and nothing else.
- What A Commit Really Is (6 labs): You will be able to open a commit object and name every field inside it.
- The Three Areas: Working Tree, Index, Repository (6 labs): You will be able to read git status as a report on three named areas and say which one every line describes.
Everyday Git
- Staging Deliberately: status, add, add --patch (8 labs): You will be able to turn a messy working tree into commits that each say one thing.
- Committing, And What A Good Message Says (7 labs): You will be able to commit in every form git offers and write a subject and body that survive the views git puts them in.
- Conventional Commits (4 labs): You will be able to write a conventional commit message and make git reject one that is not.
- Reading History: log, show And diff (7 labs): You will be able to interrogate a repository with log, show and diff, and pick the flag that answers the question you actually have.
- Ignoring Files, And The Tracked File Trap (6 labs): You will be able to write ignore patterns that work, and untrack a file you had already committed by mistake.
Branches, HEAD And History
- A Branch Is A Moving Pointer (6 labs): You will be able to create, rename and delete branches, and say exactly what each one is on disk.
- HEAD, And Why Detached HEAD Is Not An Error (6 labs): You will be able to say what HEAD points at, detach it deliberately, and keep work made while detached.
- Merging: Fast Forward Or A Merge Commit (6 labs): You will be able to predict whether a merge fast forwards or makes a merge commit, and say why.
- Rebase: The Same Work, A Different History (5 labs): You will be able to rebase a branch, show that the commits are copies, and say when not to do it.
- Undoing: restore, reset, revert And stash (7 labs): You will be able to choose the right undo command by naming which area or pointer you want to change.
Remotes
- What A Remote Actually Is (6 labs): You will be able to say what a remote is, attach one to a repository, and read back everything git knows about it.
- Clone, Forks, Push, And The Upstream Branch (2 labs): The learner can clone a repository, push changes to a remote, and explain the difference between a clone and a fork.
- Fetch Is Not Pull (3 labs): The learner can explain that fetch downloads commits without changing the working tree, while pull fetches and then merges.
Working With Other People
- The Pull Request, And Branch Naming (3 labs): You will be able to prepare, name, and open a pull request.
- Reviewing Code Well (1 lab): You will be able to review code constructively and manage repository collaborators.
- Why Conflicts Happen (1 lab): You will understand how Git detects a conflict by comparing two branches against their merge base.
- Resolving A Conflict, Line By Line (2 labs): You will be able to read conflict markers, resolve the file, and complete the merge.
Rewriting History, Tags And Workflows
- Amend, And The One Hard Rule (3 labs): Change the last commit and understand why you must never rewrite history that others have pulled.
- Interactive Rebase: Squash, Reorder, Reword (3 labs): Clean up a local branch by squashing, rewording, and reordering commits before sharing.
- Cherry Picking, Reflog, And Getting Work Back (2 labs): Copy individual commits to a different branch and recover lost commits using the reflog.
- Investigating History: blame, bisect And worktree (3 labs): Find which commit introduced a change using blame and bisect, and check out multiple branches at once with worktree.
- Tags And Releases (2 labs): Mark specific commits as releases using tags, push them to a remote, and associate them with GitHub Releases.
- Trunk Based Development Versus Git Flow: Compare branching strategies and understand when to choose continuous integration over explicit versioned releases.