| name | jj |
| description | Use the jj version control system. Always use it when the user mentions jj. |
jj
Common Commands Cheat Sheet
Basic Operations
jj status- Show current statusjj log- Show commit historyjj diff- Show changes in current revision (@)jj diff --git- Show changes in git formatjj show- View changes in current revision (same as diff)
Making Changes
jj desc -m "msg"- Add description to current changejj commit -m "msg"- Add description and start a new changejj new- Finalize current change and start a new onejj new -r main- Start a new change from mainjj squash- Combine changes with parentjj squash -i- Interactive squash (select specific changes)jj split- Split current change into multiple partsjj abandon- Discard current change
Navigation
jj edit <change-id>- Switch to and edit a specific changejj edit @-- Move to previous changejj next --edit- Move to next change
Branches (Bookmarks)
jj bookmark create <name>/jj b c <name>- Create bookmark at current revisionjj b c -r@ <name>- Create bookmark at @ (current revision)
Rebasing & Merging
jj rebase -b@ -dmain- Rebase current branch onto mainjj rebase -s <source> -d <dest>- Rebase source onto destinationjj new <change1> <change2> -m "msg"- Merge multiple changes
Git Integration
jj git init- Initialize jj repository with git backendjj git fetch- Fetch from remote (updates tracked bookmarks)jj git push- Push bookmarks to remotejj git push --allow-new- Push including new bookmarks
Utilities
jj undo- Undo last jj commandjj restore <file>- Restore file from a revisionjj resolve- Open conflict resolution UIjj file annotate <file>- Show file annotation (like git blame)
Key Concepts
@= the working copy (current revision)- No staging area - all changes are automatically in @
- Changes are mutable until pushed
- Bookmarks = Git branches
Advanced
To understand the syntax of the jj revset language (-r flag), use the following command: jj help -k revsets