Use when managing source control with Jujutsu (jj), including commits, branching (bookmarks), rebasing, and GitHub PRs.
Jujutsu (jj) is a Git-compatible VCS that treats commits as mutable objects identified by a Change ID. It emphasizes a "stacked diffs" workflow where you can easily manipulate history.
.jj directory exists in the project root.kkmpptxz) for a change. Persists across rewrites.a1b2c3d). Changes every time you modify the revision.jj describe -m "feat: description"jj bookmark create <branch-name>jj git push --bookmark <branch-name>gh pr create| Goal | Git Command | JJ Command |
|---|---|---|
| Status | git status |
jj st |
| Log | git log --graph |
jj log |
| Commit | git add . && git commit |
jj describe -m "msg" (no staging needed) |
| Amend | git commit --amend |
jj describe -m "new msg" (metadata) or edit files (content) |
| New Branch | git switch -c feat |
jj new -m "feat" && jj bookmark create feat |
| Switch | git switch main |
jj edit main (edits existing) or jj new main (new on top) |
| Push | git push |
jj git push |
| Pull | git pull |
jj git fetch (updates remote pointers, doesn't merge) |
jj rebase -s <revision> -d <destination>jj split (interactive split of current change)jj squash (moves changes into parent)git commands directly for creating commits/branches (except gh CLI).jj new to start fresh.jj records conflicts in the file. Edit file to resolve <<<< markers, then no git add needed.jj op log shows operation history. jj undo works like magic.