Home
Git EscapeRoom Labs
🔀 Git Escape Room
Learn Git from Zero to Hero through 50 Interactive Puzzle Rooms

Decryption Tip
If the content doesn’t appear after entering the password in the selected room, please refresh the page (F5 or Ctrl+R).
Usage
- There are several ways to run the Git-EscapeRoom Labs.
- Choose the method that works best for you.
Using Docker is the easiest way to get started locally with the labs:
# GitHub Container Registry
docker run -it --pull=always -p 3000:3000 ghcr.io/nirgeier/git-escaperoom
Prerequisites:
- Docker and Docker Compose installed on your system
- No additional setup required
- The easiest way to get started with the labs
- Learn in your browser without any local installation
Benefits:
- No installation required
- Pre-configured environment
- Works on any device with a web browser
- All tools pre-installed
For those who prefer to run it directly on their machine:
# Clone the repository
git clone https://github.com/nirgeier/Git-EscapeRoom
# Change to the Labs directory
cd Git-EscapeRoom/Labs
# Start with the setup lab
cd assets
# Follow the instructions in the README of each lab
cat README.md
Prerequisites:
- A Unix-like operating system (Linux, macOS, or Windows with WSL)
- Basic command-line tools
- Google Cloud Shell provides a free, browser-based environment with all necessary tools pre-installed.
- Click on the
Open in Google Cloud Shellbutton below:
- The repository will automatically be cloned into a free Cloud instance.
- Use CTRL + click to open it in a new window.
- Follow the instructions in the README of each lab.
Benefits:
- No local installation required
- Pre-configured environment
- Works on any device with a web browser
- All tools pre-installed
- Free tier available
Intro
- This tutorial teaches Git through puzzles designed as escape rooms.
- Each room covers a different Git concept - from basic installation to plumbing commands and internals.
- Every room folder includes a
READMEthat describes the room’s objectives, hints, rules, and how to verify the solution. - The Git Escape Room is a series of Git puzzles (Escape-rooms, similar to the real-life attractions).
- The puzzles are designed to teach players Git skills & features from beginner to expert level.
Pre-Requirements
- This tutorial will test your
GitandLinuxskills. - You should be familiar with the following topics:
- Basic Linux commands and shell navigation
- Basic knowledge of a text editor (vim, nano, etc.)
- Basic knowledge of
Docker(if you choose to run it with Docker)
Room Links
| # | Room | Summary |
|---|---|---|
| 01 | Install & Verify Git | Check if Git is installed, explore its binary location and sub-commands |
| 02 | Git Configuration | Configure Git identity, editor, and preferences with git config |
| 03 | Git Init | Initialize a repository and explore the .git directory structure |
| 04 | The Three States of Git | Understand Git’s three areas: Working Directory, Staging Area, and Repository |
| 05 | Git Add: Staging Deep Dive | Master git add with patterns, patches, and interactive staging |
| 06 | Git Status & Restore | Read git status output and use git restore to manage file states |
| 07 | Git Commit: Saving Snapshots | Create commits, write good messages, and use git commit options |
| 08 | Git Log: Exploring History | Navigate commit history with git log formats, filters, and search |
| 09 | Git Diff: Comparing Changes | Compare changes with git diff between working dir, staging, and commits |
| 10 | Git Branch: Parallel Universes | Create, switch, list, and manage branches with git branch and git switch |
| 11 | Git Merge: Bringing Branches Together | Combine branches with git merge, fast-forward and three-way merges |
| 12 | Merge Conflicts | Resolve merge conflicts by editing conflict markers and completing the merge |
| 13 | Git Rebase: Linear History | Rewrite history with git rebase and interactive rebase for clean timelines |
| 14 | Git Stash: Emergency Shelf | Save and restore work-in-progress with git stash |
| 15 | Git Remote: Connecting to the World | Manage remote repositories with git remote - add, rename, remove |
| 16 | Git Clone: Copying Repositories | Clone repositories with depth, branch, and bare options |
| 17 | Git Fetch: Download Without Merging | Download remote changes without merging using git fetch |
| 18 | Git Pull: Fetch + Merge | Fetch and integrate remote changes with git pull and pull strategies |
| 19 | Git Push: Sharing Your Work | Share commits with git push, set upstream, and manage remote branches |
| 20 | Git Tag: Marking Milestones | Mark releases and milestones with lightweight and annotated tags |
| 21 | Git Cherry-Pick: Selective Commits | Pick specific commits from other branches and apply them |
| 22 | Git Reset: Rewinding History | Rewind history with git reset - soft, mixed, and hard modes |
| 23 | Git Revert: Safe Undo | Safely undo commits by creating a new reverting commit |
| 24 | Git Commit –Amend: Fixing Mistakes | Fix the last commit - change message, add files, or update content |
| 25 | Git Blame: Line-by-Line Detective | Track down who changed what and when - line-by-line attribution |
| 26 | Git Bisect: Bug Hunting | Binary search through history to find the commit that introduced a bug |
| 27 | Git Reflog: Your Safety Net | Recover lost commits, branches, and undone work from the reflog |
| 28 | Git Alias: Custom Shortcuts | Create shortcuts for your most-used Git commands |
| 29 | Gitignore: Hiding Files from Git | Keep unwanted files out of your repo with .gitignore patterns |
| 30 | Gitattributes: File-Level Rules | Control line endings, diff behavior, and merge strategies |
| 31 | Git Hooks: Automation Triggers | Automate workflows with scripts that run at key Git lifecycle points |
| 32 | Git Submodule: Repos Within Repos | Embed external repositories inside your project as submodules |
| 33 | Git Worktree: Parallel Branches | Work on multiple branches simultaneously without stashing |
| 34 | Git Sparse-Checkout: Partial Repos | Clone only the parts of a repo you need |
| 35 | Git Assume-Unchanged: Hiding Local Edits | Tell Git to ignore local changes to tracked files |
| 36 | Git Clean: Remove Untracked Files | Remove untracked files and directories from your working tree |
| 37 | Git Archive: Export Without .git | Export a snapshot of your repository without the .git directory |
| 38 | Git Bundle: Offline Transfer | Transfer repositories offline using Git bundles |
| 39 | Git Format-Patch & Am: Email Patches | Create and apply patches for email-based collaboration |
| 40 | Git Grep: Search Tracked Files | Search through tracked files and commit history |
| 41 | Git Shortlog: Contributor Stats | Summarize commit activity by contributor |
| 42 | Git Describe: Human-Readable Names | Get human-readable names for commits based on nearby tags |
| 43 | Git Notes: Commit Metadata | Attach extra metadata to commits without changing their hashes |
| 44 | Git Replace: Transparent Object Swap | Transparently swap Git objects to rewrite history |
| 45 | Git Filter-Branch & Filter-Repo | Rewrite entire repository history - the nuclear option |
| 46 | Git Rerere: Reuse Recorded Resolution | Let Git remember and reuse conflict resolutions |
| 47 | Git Fsck: Filesystem Check | Check the integrity of your Git repository |
| 48 | Git GC: Garbage Collection | Optimize your repository by cleaning up and compressing objects |
| 49 | Git Plumbing Commands: Internals | Peek under the hood with Git’s low-level plumbing commands |
| 50 | Git Object Model: The Four Objects | Understand the four fundamental Git objects that power everything |
| 99 | The Final Exam | The grand escape - prove your Git mastery! |