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.