Gitvana - Learn git by "retro" playing
Posted by Alternative_One_4804@reddit | learnprogramming | View on Reddit | 24 comments
Hey everyone! I've been working on a side project called Gitvana - a retro-styled browser game where you learn git by actually typing git commands in a terminal.
The idea came from watching people struggle with git tutorials that are all theory and no practice.
So I built a game where you solve 35 increasingly weird scenarios at a fictional "Monastery of Version Control," guided by a Head Monk and judged by a cat.
What it does:
- Real git commands running in the browser (isomorphic-git + lightning-fs, zero backend)
- 35 levels across 6 acts: from git init to recovering force-pushed repos with git reflog
- 21 git commands: add, commit, branch, merge, rebase, cherry-pick, stash, bisect, blame, reflog...
- Built-in docs with conceptual guides (not just syntax — explains how git actually works internally)
- Commit graph visualization, file state panel, conflict editor
- Retro pixel art, chiptune sounds, Monkey Island-style humor
- No signup, no install, works offline (PWA)
Tech stack: Svelte 5, isomorphic-git, xterm.js, Vite, Web Audio API,
Pixel art from PixelLab
Try it: gitvana.pixari.dev
It's still rough around the edges - I'd love feedback on which levels feel too easy or too hard, and what git scenarios you'd want to see. The later levels involve rebase conflicts, secret purging, and a final boss that requires reflog + cherry-pick + merge + tag all at once.
It's open source.
Thanks for checking it out!
The_Shryk@reddit
Feedback here or on GitHub?
I’ll run through it since I always end up learning something new, and I’m probably out of practice on the more rare git functions anyways.
First thing I noticed on a 43” 4k tv running macOS on 2560x1440 (HiDPI) scaling the text is a little small. That’s mostly my problem.
Although ⌘ + works properly to scale the page so it’s no big deal. Maybe default size should be slightly larger?
The font size on the 13” MBA is slightly small as well but a couple ⌘ + fixed it.
Alternative_One_4804@reddit (OP)
I added your feedback to the github issues: https://github.com/pixari/gitvana
Thanks a lot!
ynomel@reddit
Hey u/Alternative_One_4804 I can confirm this issue - Text ist too small for 2880x1800 @ 1.67x in 14"
You could
- increase the modal size by default or allow users to "enlarge" it
- Add a Fullscreen / "ZEN-Mode" or a hint to use F11 key on their Keyboard
Also some nice music to undermine the atmosphere would be great!
Apprehensive-War792@reddit
Hey, this reminds me of https://ohmygit.org/ which is also a gamefied version to learn git. Btw, what i am looking for is a gamefied Vim, which is so exciting that I don't leave it after 10 mins. Please someone make one.
Alternative_One_4804@reddit (OP)
I’ll do it :)
Kioen@reddit
commenting so I can find this later after I wake up
miojo_noiado@reddit
I was trying to teach my friends git, but this is much better, thx
matiassalles99@reddit
very cool
code-garden@reddit
The level 'Rebase Conflict' just immediately completed itself without me doing anything.
Alternative_One_4804@reddit (OP)
THanks, added to the issues
ensignlee@reddit
This is neat, props
D4M3@reddit
i'm guessing there is a bug with the level where you have to cherry pick a commit that fixes app.js - act 2 lvl9, just using git checkout to switch to the branch passes the level.
Alternative_One_4804@reddit (OP)
Added to the github issues and fixed :)
https://github.com/pixari/gitvana
Alternative_One_4804@reddit (OP)
Thanks for reporting!
MythrilFalcon@reddit
Definitely going to check this out!
Alternative_One_4804@reddit (OP)
Thanks!
pat_trick@reddit
Looks great! I also recommend https://learngitbranching.js.org/ for folks.
Alternative_One_4804@reddit (OP)
Thanks!
Nice_Selection_6751@reddit
Dude this is perfect timing, I've been strugling with git merge conflicts at work and this looks way more fun than reading docs
Alternative_One_4804@reddit (OP)
Happy to hear that!
not_marri99@reddit
Love this idea, brilliant use of play to teach git
Show a replay/highlighted commit graph after each command so the why clicks
Small, step-by-step nudges that reveal the next command only after a mistake. A fake GitHub-like remote UI so players can push/pull and visually see branch divergence and merge history
Make later levels require combining reflog + cherry-pick + merge like you described, but add clear checkpoints and a sandbox mode where players can experiment without messing the main level, otherwise novices just rage-quit and the learning loop breaks in a second
Telemetry will help a ton: log where players fail (rebase conflicts, stash misuse, mistaken resets) and tune difficulty based on real failures, not guesses
Conflict editor needs clearer affordances (apply hunk, pick ours/theirs, stage chunk), otherwise its confusing and people try random commands until something happens
Im not a game dev, just built learning tools at work and mentored juniors, spent like 3 weekends prototyping a similar flow and teh commit-graph replay was the feature folks kept using so definately keep that in
Nice work, cant wait to try the final boss yesssss
Alternative_One_4804@reddit (OP)
Hi! Thanks for the feedback, I've creaty MANY issue sout of your comment :)
https://github.com/pixari/gitvana
NeedleworkerLumpy907@reddit
Love this - gamified git is exactly the thing I wish Id had when I nuked main as a junior
Quick notes:
- Difficulty: add soft checkpoints and optional hints for the rebase/merge levels; players commonly expect rebase to 'merge' commits so make a level that teaches that misconception and then forces recovery so the mental model sticks
- UI: show HEAD and refs on the commit graph, highlight conflicting hunks inline in the conflict editor (not just side-by-side), and add a rewind-to-snapshot button so players can try destructive commands without fear, its huge for learning
- Ops/tests: capture telemetry on which exact commands fail per level so you know where to tune, add Playwright e2e to catch regressions, and consider a "remote diverged" challenge that forces force-push + reflog recovery
Tech stack looks solid - Svelte 5 + isomorphic-git + lightning-fs is a clean combo and the offline PWA is clutch. Definately gonna file issues and help test teh rebase/conflict levels, Ive got an afternoon next week to dive in though my Bangalore schedule might push it a few days, so dont expect instant PRs
Alternative_One_4804@reddit (OP)
Thanks! Feel free to add issues, it's still PoC. :)