jujutsu

cryfs's avatarfrom cryfs

Guide to Jujutsu (jj) version control system. Use when working with commits, branches, version control, rebasing, or when the user mentions jj, git, or version control operations.

⭐2.2kstars🔀169forks📁View on GitHub🕐Updated Dec 31, 2025

When & Why to Use This Skill

This Claude skill provides a comprehensive guide and command reference for Jujutsu (jj), a modern, Git-compatible version control system. It helps developers streamline their workflow by explaining jj's unique working copy model, which eliminates the need for a staging area, and provides clear mappings from traditional Git commands to more efficient Jujutsu operations.

Use Cases

  • Git-to-Jujutsu Transition: Helping developers quickly map familiar Git commands like 'status', 'commit', and 'stash' to their more powerful Jujutsu equivalents.
  • Complex History Management: Assisting users in performing advanced version control tasks such as non-destructive rebasing, squashing commits, and utilizing stable Change IDs for better tracking.
  • Workflow Optimization: Guiding developers on how to leverage the 'working copy as a commit' model to reduce manual overhead and focus on code changes rather than state management.
  • Remote Collaboration: Providing specific instructions for syncing local Jujutsu workflows with remote Git repositories, including pushing bookmarks and fetching updates.
namejujutsu
descriptionGuide to Jujutsu (jj) version control system. Use when working with commits, branches, pull requests, PRs, version control, rebasing, pushing, or when the user mentions jj, git, or version control operations.

Jujutsu (jj) Version Control Guide

Jujutsu is a modern, Git-compatible version control system. This project uses jj colocated with git.

Key Differences from Git

Concept Git Jujutsu
Staging area Explicit git add None - working copy IS a commit
Branches Named refs Bookmarks (auto-follow rewrites)
Stash Separate stash stack Not needed - just use commits
Amend git commit --amend Just edit files, or use jj squash
Identity Commit ID only Change ID (stable) + Commit ID

Essential Commands

Task Command
Status jj status or jj st
Diff jj diff
Log jj log
Commit & continue jj commit -m "message"
Update message jj describe -m "message"
New empty commit jj new
Squash into parent jj squash
Undo last operation jj undo
Fetch from remote jj git fetch
Push to remote jj git push
Create & push bookmark jj git push --named name=@
Push existing bookmark jj git push --bookmark name

Working Copy Model

The working copy (@) is always a commit. File changes are automatically tracked - no staging required.

parent commit
    ↓
@ (working copy) ← your edits go here automatically

Quick Git-to-Jujutsu Translation

Git Jujutsu
git status jj st
git diff jj diff
git log jj log
git add . && git commit -m "msg" jj commit -m "msg"
git push jj git push
git pull jj git fetch then jj rebase -d main@origin
git checkout -b branch jj new main then jj bookmark set branch
git branch jj bookmark list
git stash jj new (just start new commit)
git blame jj file annotate

Additional References