Eight things that work differently than in Git
jj is not different syntax for Git; it is a different model on top of the same storage. Once these eight click, the rest is a matter of jj help. Click a card to open it.
branch is now bookmark, obslog became evolog, and jj git push has started requiring --allow-new for a new bookmark. When something differs, check jj help <command> for your version.The commands you will actually use
Roughly a dozen commands cover almost every day. The full translation table lives at the bottom of this page; these are the ones worth putting in your muscle memory. Click one to drop it into the terminal.
The playground
The same repo as the Git playground: some Terraform and a deployment manifest. There is no staging area and no jj add here — every command snapshots your working copy into @ first. Type commands or click a suggestion.
Changes
no repojj git init --colocate.working copy files
staging area
@ (working-copy commit)
Missions
0/12Hands-on tutorial
Ten steps that take you through a full day of jj, from an empty repo to a pushed bookmark and a resolved conflict. Each step runs in the terminal above and ticks itself off when the repo reaches the right state. Read the note before you click — the point is what happens, not the typing.
Step by step
0/10When things go wrong
The shortest summary of this entire section is jj undo. But there are a few situations you did not have in Git and will run into here.
Do you have it?
Eight questions about the model, not about the flags.
jj ↔ git
Search for what you would do in Git ("stash", "amend", "cherry-pick", "reflog") and read what it is in jj.