# 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.

Stars: 32.3k · Language: Rust · License: Apache-2.0 · Categories: Git

- Repository: https://github.com/jj-vcs/jj
- Website: https://jj-vcs.dev
- Page: https://www.trmn.sh/tools/jj

## Install

- Homebrew: `brew install jj`

## Overview

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

```bash
# via Homebrew
brew install jj
```

## Alternatives

- [delta](https://www.trmn.sh/tools/delta.md): Syntax-highlighting pager for git, diff, and grep output with side-by-side view and word-level diff highlighting (Rust, 32.6k stars)
- [gitui](https://www.trmn.sh/tools/gitui.md): Terminal-based Git GUI for staging, committing, branching, and repository management with keyboard-only control (Rust, 22.6k stars)
- [onefetch](https://www.trmn.sh/tools/onefetch.md): Command-line tool that displays Git repository information and code statistics in terminal (Rust, 12.1k stars)
- [gitoxide](https://www.trmn.sh/tools/gitoxide.md): Pure Rust implementation of Git, offered as the gix library crate plus gix and ein command-line binaries for testing the API and running workflow tools. (Rust, 12.1k stars)
- [gitu](https://www.trmn.sh/tools/gitu.md): Terminal user interface for Git inspired by Magit, providing visual staging, branching, and repository management (Rust, 2.9k stars)

---

Canonical: https://www.trmn.sh/tools/jj
