Last updated: 2026-04-17
[Jujutsu (jj)](https://www.jj-vcs.dev) is a very good version control system, likely to become git's successor.
The official docs are extensive. Here are some others:
- https://mkaz.blog/code/jujutsu-vcs (2025) is a good relatively short intro.
- https://neugierig.org/software/blog/2025/08/jj-bookmarks.html (2025)
Some discussions (there are many):
- https://news.ycombinator.com/item?id=47763759 (2026)
## Is it hard to get started / switch to jj ?
I found there is quite a learning curve, especially if you haven't used mercurial much.
And there is quite a switching hurdle, if you have ingrained mental models and workflows from git, or if you use specialised UIs like magit.
jj can be used very effectively in a git repo, but managing two complex VCS at the same time adds a lot of cognitive load at first, which may not be affordable.
Also jj's default auto-tracking behaviour is surprising and uncomfortable to many, at least at first.
All this to say, don't be surprised if you bounce off it a few times (I did). But keep trying, it's very much worth it. Also, jj is improving fast, so if you haven't tried it in a year or two, check again. Also try some UIs.
## Do I have to let jj auto-track files in my repo ?
No, you can turn that off (I do). In your config file:
[snapshot]
auto-track = "none()"
Auto-tracking can be a great default in certain projects, but a terrible one in others. jj doesn't require it at all and is still awesome without it.
## Where is the config file ?
```
$ jj config path --user
/Users/simon/.jjconfig.toml
/Users/simon/.config/jj/config.toml
```
I use the first. You can also show the path for `--repo` or `--workspace` config files.
## Should I configure all the things ?
jj is crazy configurable! But some restraint might be wise, especially when starting out. The defaults are getting better, and you can easily add confusion or waste time by customising too much.
## Are there some good UIs ?
They are appearing.
- [jjui](https://idursun.github.io/jjui) is a brilliant TUI. It has a little learning curve but it saves lots of effort.
- [GG](https://github.com/gulbanana/gg) is a simple cross-platform GUI.
## What are some other tips ?
### Make jj show help by default
[ui]
default-command = "-h"
### Show changes as one line, not two
[templates]
log = 'builtin_log_oneline'
It makes the log much more readable. This works great for jjui too. (If you have a poorly written UI assuming default log output, it might not like this.)
## What are some tips for interoperating with Git ?
When you make changes with git: jj will auto-detect them next time you run a command (or next time you switch to a jjui window).
When you make changes with jj: git will lose track of which branch is checked out (it will be left in a detached head state). To fix it, run `git switch BRANCH` again. (In magit: `b b BRANCH`).
Occasionally a failed or in-progress jj operation might cause many pending temporary files to be visible on the git side. You can get rid of these using git, or more easily using jj undo.