A terminal user interface for Git, inspired by Magit, for staging, committing, branching, rebasing and more from the keyboard.
jj-vcs/jj
Jujutsu (jj) is a Git-compatible version control system that records working-copy changes as commits and tracks every operation for undo.
- Stars
- 32,394
- Forks
- 1,279
- Open issues
- 1,249
- Last commit
- 4 hours ago
What is it?
Jujutsu is a version control system for software projects that lets you get a copy of code, track changes, and publish them to others. Its command-line tool is called jj. The default storage backend uses Git repositories, so you can fetch from and push to any Git remote and switch back to Git at any time.
Jujutsu takes the working copy as a real commit, so commands do not fail on a dirty tree and there is no need for stashes or a staging area. Every repository operation is recorded in an operation log, which makes it possible to undo mistakes or revert an earlier operation. Conflicts are stored inside commits rather than halting the workflow, and when a commit is modified its descendants are automatically rebased onto it, with conflict resolutions propagated as well.
The project draws on ideas from Git, Mercurial and Darcs, including revset queries and anonymous branches. The Git backend is the production-ready option today, and the project is still pre-1.0, so some workflows and on-disk formats may change.
Key features
- 01Uses Git repositories as the default storage, working with any Git remote.
- 02Records the working copy as a commit, so there is no staging area or stash.
- 03Logs every repository operation, allowing undo and reverting of past operations.
- 04Stores conflicts inside commits and automatically rebases descendants.
- 05Provides commands such as jj describe, jj diffedit, jj split and jj squash for rewriting history.
Use cases
- Developers who want a simpler workflow on top of an existing Git repository.
- Teams that need to recover from mistakes using the operation log.
- Keeping a repository in a Dropbox folder or backing it up with rsync in a concurrency-safe way.
Quick start
- 1
Install jj by following the official installation instructions linked in the README
- 2
Work through the official tutorial to learn the basics
- 3
Use jj help <command> to look up any command's usage
Things to know
- The README describes Jujutsu as experimental, and it may have bugs and user-interface changes.
- Only the Git storage backend is production-ready; other backends are not.
- The README says the project is relatively young with a lot of work still to be done.
- Some features, such as safe concurrent replication, are marked experimental and may change storage format.
In collections
Topics
FAQ
- What is jj?
- Jujutsu (jj) is a Git-compatible version control system that records working-copy changes as commits and tracks every operation for undo. Jujutsu is a version control system for software projects that lets you get a copy of code, track changes, and publish them to others. Its command-line tool is called jj. The default storage backend uses Git repositories, so you can fetch from and push to any Git remote and switch back to Git at any time.
- Is jj free to use? What license does it have?
- jj is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is jj still maintained?
- Actively maintained. The last commit to jj was on Nov 7, 2026.
- What can I use jj for?
- Developers who want a simpler workflow on top of an existing Git repository. Teams that need to recover from mistakes using the operation log. Keeping a repository in a Dropbox folder or backing it up with rsync in a concurrency-safe way.
- How do I install jj?
- Install jj by following the official installation instructions linked in the README Work through the official tutorial to learn the basics Use jj help <command> to look up any command's usage
- Where can I get jj?
- The source code and installation instructions are on GitHub: https://github.com/jj-vcs/jj
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A simple terminal UI for git commands that makes staging, committing, rebasing and branch work faster from the keyboard.
Git is a fast, distributed revision control system with a rich command set that exposes both high-level operations and low-level internals.
A text-mode, ncurses-based terminal interface for browsing Git repositories and staging changes by chunk.
A GitHub CLI extension for creating, rebasing, submitting and merging stacked pull requests as a chain of small reviewable branches.
An entity-level Git merge driver that merges code by functions, classes and keys instead of lines, avoiding false conflicts between independent edits.