jj
Manage code revisions
TLDR
Update description of the revisions specified by given revsets (e.g. B::D, A..D, B|C|D, etc.)
Create a new commit/revision on top of a given revision
Create a new merge commit on top of multiple revisions
Update the working copy to point to a revision
Undo the previous command (which may itself have been undo)
Execute a jj subcommand without snapshotting the working copy
Execute a jj subcommand at an operation
Display help for a specific subcommand (like new, commit, desc, etc.)
SYNOPSIS
jj [GLOBAL OPTIONS]... <SUBCOMMAND> [<ARGS>]...
PARAMETERS
-R, --repository <PATH>
Path to repository (default: current directory or JJ_CONFIG_REPO)
-r, --at-op <OPERATION>
Database operation to view workspace at (default: @)
-c, --color <WHEN>
Colorize output: never, auto (default), always
--pager <WHEN>
Use pager: never, auto (default), always
--git-config [<KEY>=<VALUE>]...
Set Git config key-value pairs for this invocation
-h, --help
Print help information
-V, --version
Print version information
DESCRIPTION
Jujutsu (jj) is a next-generation, Git-compatible distributed version control system (VCS) focused on improving developer workflows. Unlike Git's commit-centric model, jj treats Git commits as views on an underlying operation log, enabling automatic rebasing, easier conflict resolution, and immutable history. It supports Git interop out-of-the-box: you can clone, push, and pull with Git repos seamlessly.
Key features include:
• Operation-based history: Changes are recorded as operations, making history linear and bisectable.
• Revsets: Powerful query language for revisions, similar to Mercurial.
• Built-in tools: jj log for DAG visualization, jj diff with hunk editing, and jj describe for changelists.
• Concurrency-safe: No locking issues during parallel operations.
Designed for large repos and teams, jj reduces context-switching by handling common Git pains like rebase/merge churn. It's written in Rust for performance and is actively developed with growing adoption at companies like Google.
CAVEATS
Relatively new tool; lacks some Git features like submodules. Building from source requires Rust toolchain. Git interop is read/write but may need git for advanced ops.
COMMON SUBCOMMANDS
jj init: Initialize repo.
jj status: Show working copy status.
jj log: Visualize commit graph.
jj new: Create new change.
jj diff: Show changes with editing support.
INSTALLATION
Pre-built binaries on GitHub releases. Distro packages emerging (e.g., Fedora, Arch). cargo install jj-cli for Rust users.
HISTORY
Created in 2021 by Martin von Zweigbergk (Google) as a Git alternative. First stable release in 2023. Inspired by Git, Mercurial, and Sapling. Open-source under Apache 2.0/MIT; rapidly evolving with community contributions.


