Real hashes · real orphans · real reflog
See what rebase actually does
Rebase does not move your commits. It writes new ones — with new hashes — and leaves the originals sitting on the shelf, unreferenced but not gone.
Type real git commands and watch the objects appear, the hashes change, and the leftovers pile up. Nothing is installed, nothing is uploaded, and nothing you do here can break a real repository.
Same work, different objects. The two feature commits were copied onto a new base, so their hashes changed — and the originals are still on the shelf, pointed at by nothing.
Three things, and the whole model
A commit is a box
It holds a full snapshot and is named by a hash of its own contents — including which box came before it. Change what is inside, or change what came before, and it is a different box with a different name. Boxes are never edited.
A branch is a card
A branch is just a card with a string running to one box. Moving a branch moves the string. It does not touch a single box. HEAD is the card marked in use.
An orphan is a box with no card
After a rebase or a hard reset, the old boxes are still in the room — nothing points at them any more. That is what "I lost my work" actually means, and why the reflog gets it back.
How to use it
- 01
Pick a starting history
Open a scenario, or build your own with write, add, and commit. Every scenario is a script of commands that replays when you open it.
- 02
Run the command
Type it in the command bar, exactly as you would in a terminal. Newly written objects are marked in red — that red is a hash that did not exist a moment ago.
- 03
Look at what was left behind
Faded boxes are unreachable, not deleted. The register lists every ref movement, and one click turns any orphan back into a branch.
Never used rebase before? Start with a scenario — each one sets up a history and names the one command worth running next.
What is real here, and what is not
Hashes here are real in the sense of being content-derived and internally consistent — not identical to what git would produce on your machine, because git also folds in the committer time and the author identity. This simulator uses a virtual clock so every session replays exactly.