Changes
jj st
Show the working-copy change
jj diff
Diff of the current change
jj diff -r <rev>
Diff of another change
jj diff --from <a> --to <b>
Compare two revisions
jj show <rev>
Message and diff of a change
jj describe -m "<msg>"
Set the current change's message
jj describe <rev>
Edit another change's message
jj commit -m "<msg>"
Describe @ and start a new one
Shortcut for describe followed by new.
jj new
Start a new empty change on @
jj new <rev>
Start a new change on <rev>
jj new -m "<msg>"
New change with a message
jj edit <rev>
Make <rev> the working copy
jj next / jj prev
Step to child or parent
jj restore <path>
Discard changes to a file
jj file untrack <path>
Stop tracking a file
Rewriting
jj squash
Move @ into its parent
jj squash --into <rev>
Move @ into any ancestor
jj squash -i
Pick which parts to move
jj split
Split @ into two changes
jj absorb
Auto-squash edits into ancestors
Each hunk goes to the mutable ancestor that last touched those
lines.
jj rebase -s <rev> -o <dest>
Move a change and its descendants
jj rebase -r <rev> -o <dest>
Move only one change
jj rebase -b <rev> -o <dest>
Move a whole branch
jj duplicate <rev>
Copy a change
jj abandon <rev>
Drop a change, keep its children
jj revert -r <rev> -o @
Apply the inverse of a change
jj diffedit -r <rev>
Edit a change's diff in a tool
Bookmarks & remotes
jj bookmark list
List bookmarks
jj bookmark create <name>
Create a bookmark at @
jj bookmark set <name> -r <rev>
Point a bookmark at a revision
jj bookmark move --from <a> --to <b>
Move bookmarks between revisions
jj bookmark delete <name>
Delete a bookmark
jj bookmark track <name>@<remote>
Track a remote bookmark
jj git fetch
Fetch from the remote
jj git push
Push changed bookmarks
jj git push -b <name>
Push one bookmark
jj git push -c <rev>
Push with an auto-named bookmark
jj git push --dry-run
Preview what would be pushed
jj git remote add <name> <url>
Add a remote
jj git remote list
List remotes