The workshop · Edition No. 58 · 22 Oct 2026

jj-vcs/jj

A version control system that stores its history in Git repositories but handles changes and conflicts differently.

← The workshopRead the whole edition →
Jujutsu: unfinished work is a change. Version control that records the working copy.

32.2k stars · Apache-2.0 · v0.46.0 (2026-10-07) · Track this in Scout

A version control system that stores its history in Git repositories but handles changes and conflicts differently.

▶Repo detailsthe review · specs · pros & cons · install

What it does

It records the files you are working on right now as a saved change, and updates that change as you edit. There is therefore no separate step for staging and no separate idea of uncommitted work. Every operation on the repository is written down, so any command can be undone, including ones that would be hard to recover from in Git. When you edit a change that others are built on top of, it rebuilds those automatically instead of asking you to do it. Conflicts are recorded inside a change rather than stopping the operation, so you can finish what you were doing and fix them afterwards. The default storage is a Git repository, which is why existing hosting and tooling keep working. It has been in development since December 2020 and has close to twelve thousand commits. Now the boundary, and the project is clear about it. Support for nested repositories is not finished. There is no built-in support for sending changes by email. Only commits and files live in Git, so branch names and other bookkeeping are stored separately. Only the Git storage is considered ready for real use, several speed problems are known, and the features for working with others are experimental and may change. The project also notes that despite Google being a major contributor, it is not a supported Google product.

Why it matters

Who it suits. Anyone who uses Git every day and keeps hitting the same three walls: a rebase that goes wrong with no way back, a conflict that arrives at the worst moment, and a stash they forgot about. It suits people who work in long chains of small changes, because rebuilding what sits on top of an edit is automatic here. It also suits a cautious experiment, because the data stays in a Git repository and the usual tools keep reading it. Skip it if you share a working copy with people who will not install it, and skip it if your work depends on nested repositories or on sending changes by email.

Verdict. The most interesting thing on this list, and also the one asking for the most patience. Code was pushed on 31 August 2026, so it is active, but the project describes itself as experimental and says the way it works will change before version 1.0, which is a promise about future disruption rather than a warning about present bugs. Try it on an existing repository and keep using Git alongside it: because the storage is a Git repository, that costs nothing and teaches you quickly whether the model fits how you think. Two notes. Read the undo command first, because it is the feature that makes experimenting safe. And do not plan a team move on it yet, since the parts about working with others are the parts still marked experimental. For a gentler improvement on Git that changes nothing underneath, jesseduffield/lazygit is the obvious stop.

Stars32.2k
LicenceApache-2.0
Latestv0.46.0 (2026-10-07)
Good
  • The data lives in a Git repository, so existing hosting, tools and colleagues keep working.
  • Every operation is recorded, so almost anything can be undone with one command.
  • Conflicts are stored inside a change instead of stopping the work.
Watch for
  • The project calls itself experimental and expects the way it works to change before version 1.0.
  • Nested repositories are unfinished and email-based workflows are not supported.
  • Several speed problems are known, and the features for working with others are experimental.
Similar repositories
Install
# macOS, with Homebrew
brew install jj
# from source, with Rust installed
cargo install --locked --bin jj jj-cli
# then, inside an existing Git repository
jj git init --colocate
jj log
jj undo            # the command to learn first
Screenshots
jj-vcs/jj: GitHub preview cardjj-vcs/jj: Screenshot 1jj-vcs/jj: Screenshot 2jj-vcs/jj: Screenshot 3jj-vcs/jj: Screenshot 4

On Stack Radar: Build & Ship › Source Control & Collaboration › Git Hosting.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.