Learn Git by doing Git. A keyboard-driven terminal game that puts you in front of real git commands, real commits, and real dirty worktrees — all inside a disposable local sandbox that vanishes when you quit.
No browser tab, no fake command simulator, no risk to your actual repos. Gittyper opens a private localhost sandbox, generates a small throwaway codebase, and drops you straight into a real Git working tree.
npm install -g gittyper
gittyperOr run it from a clone without installing:
git clone https://github.com/harbs20/gittyper.git
cd gittyper
npm startThe installation website is a static Vercel app; build it with npm run build:web or preview it locally with npm run dev:web.
- Real Git, not a simulation — every exercise runs against an actual temporary repository with real commits, branches, indexes, diffs, stashes, and tags.
- 100 scenarios, 5 modes — from guided first commands to recall-based objectives to judged dirty-worktree cleanups.
- 68 exercises across 8 realistic codebases — JavaScript, TypeScript, Go, Python, Rust, Markdown, and Swift projects, so the muscle memory transfers.
- Zero risk — commands are parsed without a shell, paths can't leave the disposable workspace, network Git operations are blocked, and only an explicit command allowlist runs. Nothing touches the repository you launched Gittyper from.
- Tracks your growth — lifetime completions, WPM, accuracy, and achievements persist across sessions, entirely outside the repo and practice workspaces.
- Learn — guided command lessons with optional hints and character feedback; commands must be typed.
- Execute — recall-based, multi-command objectives without autocomplete.
- Workflow — realistic dirty-worktree scenarios judged from repository state.
- Projects — 68 real-world exercises across eight varied disposable codebases, including JavaScript, TypeScript, Go, Python, Rust, Markdown, and Swift projects.
- Random — continuously draws from the complete 100-scenario bank without immediately repeating.
In Random mode, press Tab and then Space to skip the current draw and immediately load a different challenge.
Gittyper recommends a Learn → Execute → Workflow path as milestones are reached, but every mode always remains available for free exploration.
Use Left/Right to move through and edit the current command line. When the prompt is empty, Left/Right browses modes instead. Ctrl+Up/Down browses drills, and Up/Down recalls commands you entered. Enter runs a command, Ctrl+H toggles a hint, and Ctrl+N chooses another random drill. Shift+Up/Down scrolls the full terminal transcript — even after an objective is complete — with Page Up/Page Down retained as alternate keys.
Press Ctrl+K for the complete in-game hotkey reference. Press ? from an empty command line to reopen the minimal controls page shown on launch.
Commands, output, and the next prompt flow through one continuous terminal transcript. The game automatically switches between a full-width workspace, a drill-list layout, and a reduced-height layout as the terminal is resized.
Hints are examples, not exact-answer requirements: Gittyper checks the resulting repository state, and you can freely explore with ls, cat, pwd, git status, git diff, git log, and other scenario-safe Git commands.
WPM stops at the moment an objective is achieved, so the result remains fixed while you review or scroll through the transcript.
Press Ctrl+P to open durable learner progress: lifetime completions, unique mastery, attempts, WPM, accuracy, per-mode advancement, and achievements. Completed drills stay marked across launches, and each drill shows its completion count plus best WPM and accuracy.
Achievements include milestones such as Centurion for completing 100 objectives and Fiery Typist for completing 100 objectives above 40 WPM. Repeat completions count toward lifetime and performance achievements; mastering the same objective repeatedly counts once toward unique mastery.
Press Ctrl+U to customize contrast, color, border characters, and how much help Gittyper provides. Assistance settings control automatic hints, the Learn-mode typing guide, and whether a successful command is confirmed between steps of a multi-command objective. The readable default uses the terminal's own foreground and background colors, so it works with light and dark Terminal profiles. Your terminal app controls the actual font family and font size.
Preferences are saved to ~/.config/gittyper/settings.json; learner history is saved separately to ~/.local/share/gittyper/progress.json (or $XDG_DATA_HOME/gittyper/progress.json). Both live outside the repository and disposable practice workspaces.
The Projects bank generates realistic local codebases such as Telescope CLI, TrailMap Web, Lantern API, Pocket Notes, Weatherboard, TaskForge, Northstar Docs, and PixelPress. Nothing touches the repository from which Gittyper was launched.
Challenge definitions live together in src/challenges/. Add personal or community exercises to src/challenges/custom.js, or add a reusable scenario family to the catalog and sandbox. The object schema, safety rules, examples, and test workflow are in docs/creating-challenges.md.
npm test
npm run checkGittyper's source code is licensed under the GNU General Public License v3.0 only. You may use, study, fork, modify, and redistribute it under that license. Distributed modified versions must remain under GPLv3 and make their corresponding source available.
The source-code license does not grant permission to present a modified version as the official Gittyper app. Forks must clearly identify their changes and follow the Gittyper brand policy.
