Jujutsu logo

Jujutsu

Git-compatible version control system with working-copy-as-a-commit, an operation log with undo, and automatic rebase of descendants. CLI is jj.

install· Homebrew

Jujutsu (command: jj) is a version control system that separates the user interface and version control algorithms from the storage backend. The production-ready backend stores commits and files in Git repositories, using the gitoxide Rust library, so it works with existing Git-based tools and forges. Bookmarks (branches) and other higher-level metadata are kept in custom storage outside of Git.

Its model combines ideas from several systems. From Mercurial and Sapling it takes the revset language for selecting commits, anonymous branches, a configurable template language for output, and no explicit index or staging area. From Darcs it takes first-class conflicts, which are recorded as objects in the same way commits are, so conflict resolutions can be propagated automatically. The working copy is itself a commit: file changes are recorded automatically and amended on each subsequent change, which replaces Git's stash and index.

Other documented capabilities include an operation log that records every repository operation (commits, pulls, pushes) and lets you undo them, and automatic rebasing of all descendants when a commit is modified, including propagation of conflict resolutions. jj file annotate provides the equivalent of git blame. An experimental feature aims to make repositories safe under concurrent access, for example when stored in Dropbox or copied with rsync, surfacing conflicts instead of corrupting the repository. Help is available via jj help and jj help -k <keyword>.

It is aimed at developers who want to keep using Git remotes and tooling while working with a different workflow, and the core developers use it to develop Jujutsu itself. The README describes the project as experimental: Git compatibility is stable and most developers use it daily, but some features and workflows may still be incomplete. Documentation includes a tutorial and a table comparing jj and git commands.

Installation

# via Homebrew
brew install jj

Alternatives & related tools

add a badge to your README

Maintain Jujutsu? Show that it's featured on trmn. The badge links back to this page.

Featured on trmn
Markdown
[![Featured on trmn](https://www.trmn.sh/badge/jj.svg)](https://www.trmn.sh/tools/jj?utm_source=badge)
HTML
<a href="https://www.trmn.sh/tools/jj?utm_source=badge"><img src="https://www.trmn.sh/badge/jj.svg" alt="Featured on trmn" height="20"></a>