New to Git? Start here
You don't need to know what Git is to play this game, and you don't need to have written a line of code. This is the two-minute version of what the game is about, with none of the programmers' words used until each one has been explained.
One thing, built by many hands
Software is written by groups. Ten people might be working on the same program at once, and if they all typed into the same file at the same time they would wreck each other's work within the hour. So each person works on their own copy, and every so often sends their finished pieces to a shared copy that everyone agrees is the real one. Git is the tool that keeps track of all of this: whose piece came in when, what changed, and how to undo it. Almost every programmer in the world uses it, every day.
Picture a tower that a group is building together, one brick at a time. Everyone works from a photo of the tower, and when your brick is ready you walk over and put it on top. Most of the day, that is all there is to it. The interesting part is what happens when it isn't.
Five things that go wrong, and the words for them
- Your brick doesn't fit. Someone added a brick while you were working from an old photo, so the top of the tower isn't where you thought. You have to look at the real tower first, then place yours. In the game, your piece is bounced back with Git's own words on it, and you learn to look first. Git's words: a push (placing your brick), a pull (looking at the real tower), and a rejected push.
- Two people changed the same spot. You both reshaped the same brick in different ways, and the tower can't hold both. Someone has to choose: yours, theirs, or a bit of each. In the game, that choice is yours to make before the day ends. Git's word: a conflict.
-
Someone knocked your brick off. A player can force their own version of the tower onto
everyone, erasing the bricks laid after theirs. It is allowed, it is rude, and it has a cost. In the game it
is a card,
push --force, and there is another card that puts your bricks back. Git's words: a forced push, and the reflog, the record that makes undoing it possible. - A brick was cracked all along. Some pieces of work hide a mistake that nobody sees until someone checks. In the game, some cards carry a hidden bug: you can hope nobody looks at yours, or look at someone else's. Git's word for looking at who laid a brick is blame, which is less personal than it sounds.
- The tower is done. When it is tall enough it is inspected: every brick checked, the cracked ones counted, and the builders scored. In the game, someone ships version 1.0, every card is turned face up, and the scoreboard says who won and why. Git's word: a release.
How a game goes
A game is a handful of days long. A day can be one minute or a whole real day; you choose when you start. Each day, everyone looks at the shared tower, decides on the few things they will do, three give or take, writes them down as a pack, and sends it. When the day ends, all the packs happen at once, in an order nobody chose, which is where the bouncing and the clashes come from. After seven to twelve days the tower is tall enough, and the game ends.
You can play against a bot, which says why it does each thing it does, or in a room with up to four friends, from a link. There is nothing to install and nothing to sign up for.
Who this is for
- Anyone curious about what the programmers in their life actually do all day.
- A student before a first programming class, so the words are familiar when they arrive.
- A designer, a writer or a manager who hears "merge conflict" and "force push" every week and would like to know what the fuss is.
- Someone who likes a card game with bluffing in it, and doesn't mind learning a thing by accident.
The words, one line each
| Word | What it means | In the tower |
|---|---|---|
| Git | The tool that keeps track of everyone's pieces | The photo album, and the rules for adding bricks |
| commit | One finished piece of work | A brick |
| main | The shared copy everyone agrees is real | The tower |
| push | Sending your piece to the shared copy | Placing your brick on top |
| pull | Getting the latest shared copy | Taking a new photo of the tower |
| rejected | Your push was refused: the shared copy moved first | Your brick doesn't fit the top |
| conflict | Two pieces changed the same thing | Two shapes for one brick |
| force push | Overwriting the shared copy with yours | Knocking bricks off to place yours |
| reflog | The record that lets you undo that | The photos from before |
| bug | A mistake hidden in a piece | A cracked brick, painted over |
| blame | Finding which piece a line came from | Reading who laid a brick |
| release | Declaring the work done and checking it | The inspection |
Play the first game
It walks you through a day, one sentence at a time, and every word above comes up when it is needed.