Skip to content

jk manual

Name changes and check remotes

Create, move, and delete local bookmarks, fetch an explicit remote, and inspect a push dry-run.

Press B from the log to inspect bookmarks. Start with a repository containing a change you want to name. Fetch and push dry-run also require a configured Git remote; the remote can be a local test repository or an existing server.

The list includes local and remote bookmarks, tracking state, deleted local bookmarks, and conflicts. A remote row is not a local bookmark you can move. Native move, delete, and push dry-run require an unambiguous local row with one target.

Inspect the target before changing a name

Move with j/k or the arrows. Press Enter to inspect an available unambiguous target, then Backspace to return. r reloads the list; Esc returns to the previous view. Press ? for bookmark help. The a key opens an invisible workspace-context action menu on this screen. Press Esc to exit that hidden mode if the normal keys stop responding.

A bookmark names a revision. Moving that name does not rebase the revision, edit its description, or switch this workspace’s working copy. Deleting the local name does not abandon its target change.

Create a local bookmark

  1. Press c in the bookmark list.
  2. Type the name. Press Tab to reach the target revision field, which initially contains @.
  3. Keep @ or replace it with the intended revision. Ctrl-u clears the focused field; Tab switches between the name and target.
  4. Press Enter to open the preview, then read the name, target, and command.
  5. Press Enter to create it, or Esc to return from the preview without executing.
  6. Verify the new local row and inspect its target with Enter.

Create and move refresh the list after success without a success message. Check the row and target to confirm the result.

The native create form takes a typed revision expression. It does not automatically take the log’s cursor or marks as its target. Check the target field even when you arrived from the intended change.

Esc closes the input form. Cancelling its preview retains the form so you can correct the fields. An empty name or target is rejected before the command. If jj rejects the name, revision expression, or existing bookmark, inspect C and correct the input before retrying.

Move or delete a local bookmark

Select the local row and press m to move it. The target input starts at @; replace it when another revision is intended. Press Enter to review the command, then Enter to run it. Refresh and open the target to verify the name points at the intended change. jj can reject a move that needs options the native form does not expose; read the diagnostic before deciding how to proceed.

To remove a local bookmark, select its row and press x. Read the destructive preview and press Enter to delete, or Esc to cancel. Verify the local name is removed or shown in its tracked deleted state. The target change remains in the graph. Deleting a local bookmark does not itself contact a remote; a later publication workflow can carry that deletion.

Conflicted, deleted, and remote-only rows cannot be treated as ordinary single-target local rows. Inspect them first. Other bookmark operations, such as track, untrack, rename, and forget, are available through noninteractive command mode, with jj’s semantics. Use the bookmark screen for create, move, and delete; : rejects those command families.

After an unintended local mutation, inspect its operation and use operation recovery. Recovery of repository metadata does not reverse changes already published elsewhere.

Fetch from a chosen remote

Use fetch when the repository should learn a remote’s current state.

  1. Press F in the bookmark list.
  2. Choose a remote with j/k or the arrows. Configured remotes appear even if they have no bookmark rows yet.
  3. Press Enter to preview the fetch. Merely choosing the remote has no network effect.
  4. Check the selected remote, then press Enter again to run fetch.
  5. Read the retained command output. Return to the bookmark list and inspect the refreshed rows.

Esc cancels the remote picker or the preview before fetch. Fetch can contact the selected remote and updates local knowledge of its refs. It does not publish local bookmarks. Names are passed as exact patterns so a wildcard in a name does not silently widen the selection.

If there are no remotes, configure one with jj before retrying. A failed fetch retains stdout, stderr, and status in Command History. Check the remote configuration, connectivity, and authentication outside jk as needed. Commands that need a foreground credential prompt cannot use jk’s captured input. If the list refresh fails after a fetch, jk preserves its last usable snapshot; refresh again before treating it as current.

Preview publication without publishing

Select a local bookmark with one target and press P. Choose the remote, press Enter for the preview, then review the exact bookmark and remote scope. A second Enter runs the push dry-run.

The dry-run may contact that remote and report what jj would push. Remote refs remain unchanged, including when the dry-run succeeds. Read the retained output and inspect C for the exit status. Esc cancels either selection or confirmation before the dry-run starts.

Real push is unavailable in the native interface and rejected by jj command mode, including attempts to enter git push --dry-run there. Leave jk to publish with the jj CLI, then return and refresh. Preserve the bookmark and remote you reviewed; do not replace the scoped operation with a broad push. Native tags, remote management, and publication confirmation remain separate gaps in the coverage map.

Watch the workflow

Check which workspace a command will change

Check which workspace a command will change · 0:31 · MP4
Screenshots and terminal evidence
Check which workspace a command will change: audit scope context bookmarks
audit scope context bookmarks · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  audit-context: 5416e289bcca (local)
   audit-context@git: 5416e289bcca (tracked, synced)







































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back
Check which workspace a command will change: audit scope context hidden help
audit scope context hidden help · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  audit-context: 5416e289bcca (local)
   audit-context@git: 5416e289bcca (tracked, synced)







































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back
Check which workspace a command will change: audit scope context input
audit scope context input · Terminal state and styles (JSON)
Read the terminal text
jk jj -R /home/runner/work/jk/jk/target/manual-fixtures/workspaces.MvkFJr/workflows.8HgG9l/workspa
Working copy changes:
A ../scratch/KEEP-ME.txt
Working copy  (@) : tlznmvqv 6ada6fb2 (no description set)
Parent commit (@-): qnyvzuou b2e6655a Add workspace demo files














                     jj command

                     : describe -m 'Scope audit changed startup workspace' @

                     enter run   Ctrl-u clear   backspace edit   esc cancel
Check which workspace a command will change: audit scope context result
audit scope context result · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/manual-fixtures/worksp
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/manual-fixtures/
Status: success

Stdout:
<empty>

Stderr:
Working copy  (@) now at: qmquxmry 38b1b40c audit-context | (empty) Scope audit changed startup wo
Parent commit (@-)      : qnyvzuou b2e6655a Add workspace demo files

Actions: e edit/retry command   : run another jj command






























? help  V options  r refresh  j/k line  space page  q quit
Check which workspace a command will change: audit scope context recovered
audit scope context recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  qmquxmry [email protected] 2026-01-01 12:00:00 audit-context default@ 5416e289
·  │  (empty) Workspace lifecycle demo
   │ ○  tlznmvqv [email protected] 2026-01-01 12:00:00 scratch@ 6ada6fb2
   ├─╯  (no description set)
   ○  qnyvzuou [email protected] 2026-01-01 12:00:00 b2e6655a
   │  Add workspace demo files
   ◆  zzzzzzzz root() 00000000


































? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2

All retained evidence (50 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Other recorded forms and recovery paths (4)

Use the native confirmation for bookmarks and remotes

Use the native confirmation for bookmarks and remotes · 0:30 · MP4
Screenshots and terminal evidence
Use the native confirmation for bookmarks and remotes: manual command restrictions bookmark blocked
manual command restrictions bookmark blocked · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  xuxnqppm [email protected] 2026-01-01 12:00:00 demo 1d7f5db5
·  │  Review cache publication
   ○  kspsvwkk [email protected] 2026-01-01 12:00:00 review-keep stable-a stable-b stable-c 7084ee8c
   │  Prepare remote workflow
   ◆  zzzzzzzz root() 00000000










       jj command

       : bookmark create review-topic
       error: bookmark changes are unavailable in command mode; use the bookmark view's B action

       enter run   Ctrl-u clear   backspace edit   esc cancel
Use the native confirmation for bookmarks and remotes: manual command restrictions push blocked
manual command restrictions push blocked · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  xuxnqppm [email protected] 2026-01-01 12:00:00 demo 1d7f5db5
·  │  Review cache publication
   ○  kspsvwkk [email protected] 2026-01-01 12:00:00 review-keep stable-a stable-b stable-c 7084ee8c
   │  Prepare remote workflow
   ◆  zzzzzzzz root() 00000000









  jj command

  : git push --dry-run
  error: git push is unavailable in command mode, including --dry-run; use the bookmark view's P
  action

  enter run   Ctrl-u clear   backspace edit   esc cancel
Use the native confirmation for bookmarks and remotes: manual command restrictions native path
manual command restrictions native path · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: 1d7f5db52643 (local)
   review-keep: 7084ee8c29aa (local)
   stable-a: 7084ee8c29aa (local)
   stable-b: 7084ee8c29aa (local)
   stable-c: 7084ee8c29aa (local)









              jj git fetch

              Command
              jj --no-pager --color never --repository
              /home/runner/work/jk/jk/target/dogfood-artifacts/fixtures/refs.kCTcqM/client
              git fetch --remote 'exact:"fixture"'


              enter run  y copy  esc cancel

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (44 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Manage remote bookmark tracking

Manage remote bookmark tracking · 0:52 · MP4
Screenshots and terminal evidence
Manage remote bookmark tracking: command bookmarks tracked
command bookmarks tracked · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: edc29bc14d20 (local)
   incoming: 8389e947292a (local)
   incoming@fixture: 8389e947292a (tracked, synced)
   review-keep: 7e2e0051975f (local)
   stable-a: 7e2e0051975f (local)
   stable-b: 7e2e0051975f (local)
   stable-c: 7e2e0051975f (local)


































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back
Manage remote bookmark tracking: command bookmarks untracked
command bookmarks untracked · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: edc29bc14d20 (local)
   incoming: 8389e947292a (local)
   incoming@fixture: 8389e947292a (untracked)
   review-keep: 7e2e0051975f (local)
   stable-a: 7e2e0051975f (local)
   stable-b: 7e2e0051975f (local)
   stable-c: 7e2e0051975f (local)


































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back
Manage remote bookmark tracking: command bookmarks renamed
command bookmarks renamed · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: edc29bc14d20 (local)
   incoming@fixture: 8389e947292a (untracked)
   local-review: 8389e947292a (local)
   review-keep: 7e2e0051975f (local)
   stable-a: 7e2e0051975f (local)
   stable-b: 7e2e0051975f (local)
   stable-c: 7e2e0051975f (local)


































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back
Manage remote bookmark tracking: command bookmarks forgotten
command bookmarks forgotten · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: edc29bc14d20 (local)
   incoming@fixture: 8389e947292a (untracked)
   review-keep: 7e2e0051975f (local)
   stable-a: 7e2e0051975f (local)
   stable-b: 7e2e0051975f (local)
   stable-c: 7e2e0051975f (local)



































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3 · Outcome assertions 4

All retained evidence (49 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Keep a bookmark on the intended change

Keep a bookmark on the intended change · 0:40 · MP4
Screenshots and terminal evidence
Keep a bookmark on the intended change: refs bookmarks create
refs bookmarks create · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: 15960d8a8268 (local)
   review-keep: 20f45f72fcc2 (local)
   stable-a: 20f45f72fcc2 (local)
   stable-b: 20f45f72fcc2 (local)
   stable-c: 20f45f72fcc2 (local)










           jj bookmark create

           ! Changes local repository metadata.

           Command
           jj --no-pager --color always --repository
           /home/runner/work/jk/jk/target/dogfood-artifacts/fixtures/refs.kdPe31/client
           bookmark create --revision @- -- 'review-*'


           enter run  y copy  esc cancel
Keep a bookmark on the intended change: refs bookmarks move
refs bookmarks move · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
   demo: 15960d8a8268 (local)
›  review-*: 20f45f72fcc2 (local)
   review-keep: 20f45f72fcc2 (local)
   stable-a: 20f45f72fcc2 (local)
   stable-b: 20f45f72fcc2 (local)
   stable-c: 20f45f72fcc2 (local)









           jj bookmark move

           ! Changes local repository metadata.

           Command
           jj --no-pager --color always --repository
           /home/runner/work/jk/jk/target/dogfood-artifacts/fixtures/refs.kdPe31/client
           bookmark move --to @ -- 'exact:"review-*"'


           enter run  y copy  esc cancel
Keep a bookmark on the intended change: refs bookmarks delete
refs bookmarks delete · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
   demo: 15960d8a8268 (local)
›  review-*: 15960d8a8268 (local)
   review-keep: 20f45f72fcc2 (local)
   stable-a: 20f45f72fcc2 (local)
   stable-b: 20f45f72fcc2 (local)
   stable-c: 20f45f72fcc2 (local)









           jj bookmark delete

           ! Changes local files or history.

           Command
           jj --no-pager --color always --repository
           /home/runner/work/jk/jk/target/dogfood-artifacts/fixtures/refs.kdPe31/client
           bookmark delete -- 'exact:"review-*"'


           enter run  y copy  esc cancel
Keep a bookmark on the intended change: refs bookmarks recovered
refs bookmarks recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
   demo: 15960d8a8268 (local)
   review-*: 15960d8a8268 (local)
›  review-keep: 20f45f72fcc2 (local)
   stable-a: 20f45f72fcc2 (local)
   stable-b: 20f45f72fcc2 (local)
   stable-c: 20f45f72fcc2 (local)



































Enter inspect  c create  m move  x delete  F fetch  P dry-run  ? help  Esc back

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (46 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Fetch and preview publication to a chosen remote

Fetch and preview publication to a chosen remote · 0:30 · MP4
Screenshots and terminal evidence
Fetch and preview publication to a chosen remote: refs remotes choose
refs remotes choose · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: 02f7c7e40588 (local)
   review-keep: 5bf1d2530712 (local)
   stable-a: 5bf1d2530712 (local)
   stable-b: 5bf1d2530712 (local)
   stable-c: 5bf1d2530712 (local)












                              Fetch from remote

                              > fixture

                              ↑/↓ choose  Enter preview  Esc cancel
Fetch and preview publication to a chosen remote: refs remotes fetch preview
refs remotes fetch preview · Terminal state and styles (JSON)
Read the terminal text
jk jj bookmark list
›  demo: 02f7c7e40588 (local)
   review-keep: 5bf1d2530712 (local)
   stable-a: 5bf1d2530712 (local)
   stable-b: 5bf1d2530712 (local)
   stable-c: 5bf1d2530712 (local)











           jj git fetch

           Command
           jj --no-pager --color never --repository
           /home/runner/work/jk/jk/target/dogfood-artifacts/fixtures/refs.D38HFS/client
           git fetch --remote 'exact:"fixture"'


           enter run  y copy  esc cancel
Fetch and preview publication to a chosen remote: refs remotes fetched
refs remotes fetched · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color never --repository /home/runner/work/jk/jk/target/dogfood-artifacts/fixtu
Command: jj --no-pager --color never --repository /home/runner/work/jk/jk/target/dogfood-artifacts
Status: success

Stdout:
<empty>

Stderr:
bookmark: incoming@fixture [new] untracked

Actions: e edit/retry command   : run another jj command































? help  V options  r refresh  j/k line  space page  q quit
Fetch and preview publication to a chosen remote: refs remotes push result
refs remotes push result · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color never --repository /home/runner/work/jk/jk/target/dogfood-artifacts/fixtu
Command: jj --no-pager --color never --repository /home/runner/work/jk/jk/target/dogfood-artifacts
Status: success

Stdout:
<empty>

Stderr:
Changes to push to fixture:
  bookmark: demo [add to 02f7c7e40588]
Dry-run requested, not pushing.

Actions: e edit/retry command   : run another jj command





























? help  V options  r refresh  j/k line  space page  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (46 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.