A comprehensive, modern reference for Jujutsu VCS - a powerful Git-compatible version control system that's both simple and powerful.
Jujutsu (jj) is a next-generation version control system that combines the best of Git and Mercurial while fixing many pain points of traditional VCS. It's fully Git-compatible, meaning you can use it on any Git repository without migration.
- Working copy as a commit - No staging area; changes are automatically tracked
- Change-based model - Work with mutable changes instead of immutable commits
- Automatic rebasing - Descendants are automatically rebased when you modify history
- First-class conflicts - Conflicts don't block operations; resolve them when ready
- Powerful undo - Every operation can be undone with
jj undo - Git compatible - Use with any Git repository and remote
- Google uses it internally
- Growing open-source community
- Developers frustrated with Git's complexity
# Install (see Installation.md for more options)
cargo install --git https://github.com/jj-vcs/jj jj-cli
# Initialize in an existing Git repo (colocated mode)
jj git init --colocate
# Or clone a new repository
jj git clone --colocate https://github.com/user/repo
# See what's happening
jj status
jj log
# Make changes and commit
jj new -m "Your change description"
# Edit files...
jj squash # Move changes into the description you created
# Push to remote
jj git pushManaging multiple Git repo clones? (e.g., my-api_01, my-api_02, ... my-api_06)
See Workflow Cheat Sheet to learn how Jujutsu replaces 6 repository clones with a single repo and makes feature juggling trivial. No more:
- Searching for a "free" clone
- Stashing or WIP commits to switch features
- Forgetting which clone has which feature
- Wasting disk space on duplicate repos
One repo. Infinite parallel features. Instant context switching.
This repository contains comprehensive documentation organized by topic:
- Installation - How to install jj on various platforms
- Getting Started - Your first steps with jj
- Core Concepts - Understanding jj's mental model
- Commands Reference - Complete command reference by category
- Git Comparison - Git vs jj command equivalents
- Git Interoperability - Using jj with Git repositories
- Common Workflows - Daily development patterns
- Conflict Resolution - Handling merge conflicts
- Advanced Features - Power user features
- Configuration - Config files, aliases, templates, and revsets
- Builtin Editor - Using the interactive diff/merge editor
- Best Practices - Modern best practices for 2025
- Troubleshooting - Common issues and solutions
- Resources - External tutorials and community links
| Git Pain Point | Jujutsu Solution |
|---|---|
| Complex staging area | No staging; working copy is always a commit |
| Confusing rebase conflicts | Conflicts don't block operations |
| Fear of rewriting history | Automatic rebasing + powerful undo |
| Detached HEAD state | Always on a change, never "detached" |
| Lost commits | Operation log tracks everything |
| Merge conflict hell | First-class conflict representation |
- Safety first - Operations are logged and can be undone
- No hidden state - Everything is explicit and visible
- Flexibility - Mutable changes until pushed
- Simplicity - Consistent, predictable commands
- Git compatibility - Works seamlessly with Git infrastructure
jj status # Show working copy status
jj log # View commit history
jj new -m "Description" # Start a new change
jj squash # Move changes into parent
jj bookmark create <name> # Create a bookmark (branch)
jj git push # Push to remotejj log # View history
jj show # Show current change
jj edit <revision> # Switch to a different change
jj next # Move to child revision
jj prev # Move to parent revisionjj describe # Edit current change description
jj split # Split change into multiple
jj squash # Squash change into parent
jj absorb # Automatically distribute changes
jj rebase -d <dest> # Rebase to new parentjj undo # Undo last operation
jj op log # View operation history
jj op restore <id> # Restore to specific operation
jj abandon # Abandon a change- Start Here: Read Getting Started and Core Concepts
- If you know Git: Review Git Comparison for command equivalents
- Daily Usage: Bookmark Commands Reference and Workflows
- Level Up: Explore Advanced Features and Best Practices
- Configure: Customize your setup with Configuration
This is a living document. Contributions, corrections, and suggestions are welcome!
This documentation is provided as-is for the community. Jujutsu itself is licensed under Apache 2.0.
Last Updated: 2025-10-15 Jujutsu Version: Latest (compatible with v0.15+)