Jujutsu Cheat Sheet

jj status
jj new
jj edit
jj squash
jj undo
jj op log
With Git backend
jj git fetch
jj git push
jj git push -b <bookmark_name>
Describe
# describe / add commit message for current working copy
jj describe
# describe with message
jj describe -m "message"
# describe parent
jj describe @-
# describe a revision
jj describe -r <rev> 
Log
jj log
# all logs
jj log -r 'all()'
# 10 lines of log
jj log -r 'all()' -n 10
Tag
# create tag
jj tag set <tagname>
jj tag set <tagname> -r <rev>
jj tag set <tagname> -r <bookmark_name>
# list tags
jj tag list
# delete tag
jj tag delete <tagname>
# push tag
jj git push --tag <tagname>
Diff
# diff working copy to its parent
jj diff
# diff a revision to its parent
jj diff -r <rev>
# output git format
jj diff --git
# diff two revisions
jj diff --from <rev1> --to <rev2>
# rev, rev1 and rev2 can be change IDs or bookmarks
Bookmark
# delete bookmark(s)
jj bookmark delete <b1> <b2>
# push deleted bookmark(s) to remote
jj git push --deleted
# create bookmark
jj bookmark create <bookmark_name>
# create bookmark and point it to a commit
jj bookmark create <bookmark_name> -r <change_id>
Config
# default editor
jj config set --user ui.editor "nvim"
## in file
jj config edit --user
### INI, TOML
[ui]
editor = "code --wait"
###
jj config edit # create .jj/repo/config.toml
Restore a deleted file
jj restore --from '@-' -- <file_name>
Restore a deleted local bookmark
jj bookmark forget <name>
jj bookmark track <name>@origin
jj bookmark track <name> --remote=origin
Rebase
jj rebase -r @ -d master # master: bookmark
#         ^  ^  ^
#         |  |  |
#         |  |  Destination
#         |  |
#         |  Working copy
#         |
#         Revision