All apps/Jujutsu

Jujutsu

jj

A Git-compatible version control system that is both simple and powerful.

Runs as jj|macOS, Linux, Windows|github.com

Command form

ai-draft · 9 tasks · 29 fields

Common Jujutsu jobs: log, new change, describe, git clone and git push. Pick a subcommand.

Opens the form; the finished command lands at your prompt, unrun
otty gui jj

jj log

Show revision history

Show the graph of revisions. Template and diff-tool options are left out.

Show revision historyExample values, fixed in this page — nothing here reaches a terminal
Basic
Limit*
integer
Flat list (no graph)
--no-graph
TasksEach one presets the form for one job
Recent history
limitno_graph
All revisions
revision
ParametersOnly these flags are editable in the form
Paths
path · positional 0 · repeatable
Revisions (revset)
string
--revision-r
Limit
integer
--limit-n
Oldest first
boolean
--reversed
Flat list (no graph)
boolean
--no-graph-G
Show patch
boolean
--patch-p
Summary of changed paths
boolean
--summary-s
Change histogram
boolean
--stat

jj new

Create a new change

Create a new, empty change and edit it by default.

Create a new changeExample values, fixed in this page — nothing here reaches a terminal
Basic
Description
string
TasksEach one presets the form for one job
New change on top
message
Merge revisions
parentsmessage
ParametersOnly these flags are editable in the form
Parent revisions
string · positional 0 · repeatable
Description
string
--message-m
Do not edit the new change
boolean
--no-edit
Insert after
string
--insert-after-A
Insert before
string
--insert-before-B

jj describe

Edit a description

Set the description of a change; opens an editor unless a message is given.

Edit a descriptionExample values, fixed in this page — nothing here reaches a terminal
Basic
Description*
string
Revisions
string
TasksEach one presets the form for one job
Set description
revsetsmessage
ParametersOnly these flags are editable in the form
Revisions
string · positional 0 · repeatable
Description
string
--message-m
Open editor anyway
boolean
--editor

jj git clone

Clone a Git repo

Create a new Jujutsu repo backed by a clone of a Git repository.

Clone a Git repoExample values, fixed in this page — nothing here reaches a terminal
Basic
Source URL or path*
string
Destination directory
directory
TasksEach one presets the form for one job
Clone
sourcedestination
Shallow clone
sourcedestinationdepth
ParametersOnly these flags are editable in the form
Source URL or path
string · positional 0
Destination directory
path · positional 1
Remote name
string
--remote
Colocate with Git
boolean
--colocate
Do not colocate
boolean
--no-colocate
Shallow clone depth
integer
--depth
Branch
string · repeatable
--branch-b

jj git push

Push to a Git remote

Push bookmarks to a remote. Safety checks are done by jj; --change and private/empty-description overrides are left out.

Push to a Git remoteExample values, fixed in this page — nothing here reaches a terminal
Basic
Bookmark*
string
Remote
string
TasksEach one presets the form for one job
Push a bookmark
bookmarkremote
Push tracked
trackedremote
ParametersOnly these flags are editable in the form
Remote
string
--remote
Bookmark
string · repeatable
--bookmark-b
Tag
string · repeatable
--tag-t
Push everything
boolean
--all
Tracked only
boolean
--tracked
Push deletions
boolean
--deleted
SourcesEvery flag above is checked against these
ref
**Usage:** `jj log [OPTIONS] [FILESETS]...` * `<FILESETS>` — Show revisions modifying the given paths * `-r`, `--revision <REVSETS>` — Which revisions to show * `-n`, `--limit <LIMIT>` — Limit number of revisions to show * `--reversed` — Show revisions in the opposite order (older revisions first) * `-G`, `--no-graph` — Show a flat list of revisions instead…
manual2026-10-27

docs.jj-vcs.dev

ref
**Usage:** `jj new [OPTIONS] [REVSETS]...` * `<REVSETS>` — Parent(s) of the new change [default: @] [aliases: -o, -r] * `-m`, `--message <MESSAGE>` — The change description to use * `--no-edit` — Do not edit the newly created change * `-A`, `--insert-after <REVSETS>` [alias: `after`] — Insert the new change after the given commit(s) * `-B`, `--insert-before…
manual2026-10-27

docs.jj-vcs.dev

ref
**Usage:** `jj describe [OPTIONS] [REVSETS]...` * `<REVSETS>` — The revision(s) whose description to edit (default: @) [aliases: -r] * `-m`, `--message <MESSAGE>` — The change description to use (don't open editor) * `--stdin` — Read the change description from stdin * `--editor` — Open an editor to edit the change description
manual2026-10-27

docs.jj-vcs.dev

ref
**Usage:** `jj git clone [OPTIONS] <SOURCE> [DESTINATION]` * `<SOURCE>` — URL or path of the Git repo to clone * `<DESTINATION>` — Specifies the target directory for the Jujutsu repository clone. * `--remote <REMOTE_NAME>` — Name of the newly created remote * `--colocate` — Colocate the Jujutsu repo with the git repo * `--no-colocate` — Disable colocation of…
manual2026-10-27

docs.jj-vcs.dev

ref
**Usage:** `jj git push [OPTIONS]` * `--remote <REMOTE>` — The remote(s) to push to (can be repeated) * `-b`, `--bookmark <BOOKMARK>` — Push only this bookmark, or bookmarks matching a pattern (can be repeated) * `-t`, `--tag <TAG>` — Push only this tag, or tags matching a pattern (can be repeated) * `--all` — Push all bookmarks and tags (including new ones)…
manual2026-10-27

docs.jj-vcs.dev

Before it fills your prompt, Otty checks the installed jj against its version. A form that does not match your version is not offered.