| name | jj |
| description | Jujutsu (jj) VCS guidance for this project. Use whenever performing any version control operations: committing, viewing history, working with bookmarks, pushing/fetching, or any time a git command would otherwise be used.
|
| allowed-tools | Bash(jj *) |
This project uses Jujutsu (jj) in a colocated git repo (.jj/ and .git/ both exist). Use jj for all version control operations. Do not use git commands directly.
Key concepts
| Concept | jj | git equivalent |
|---|
| Current state | @ (working copy commit) | working tree + index |
| Staging | None — all tracked changes are part of @ automatically | git add |
| Named refs | Bookmarks | Branches |
| Stable ID | Change ID (survives rewrites) | — |
| Content ID | Commit ID (changes on rewrite) | Commit SHA |
| Main ref | canon bookmark | main/master branch |
Common commands
jj status
jj log
jj log -r 'all()'
jj diff
jj diff -r <change>
jj describe -m "message"
jj new
jj new -m "message"
jj new <rev>
jj squash
jj squash -m "message"
jj split
jj rebase -d <destination>
jj bookmark list
jj bookmark set <name>
jj bookmark create <name>
jj bookmark move <name> --to <rev>
jj git fetch
jj git push
jj git push -b <name>
Workflow notes
- There is no staging area. Every tracked file change is part of the current working copy commit (
@) automatically.
- Prefer change IDs (short alphabetic strings like
v, qk, xnm) over commit IDs when specifying revisions in commands.
jj describe is how you "write a commit message" — the change already exists; you are just naming it.
jj new followed by jj squash is the jj equivalent of amending an earlier commit.
- The
canon bookmark tracks the main branch. Do not move it manually.