Why Jujutsu is a step up from Git

There's a new, hot version control system that replaces Git called Jujutsu (jj). I started to use Jujutsu a couple of months ago, during my summer vacation. I had read posts online from a lot of people who had made the switch and really liked it, which intrigued me. I was already proficient with Git and was skeptical if the time investment in learning a new version control system would be worth it. But after reading enough positive reviews, I felt that I had to give it a try. I am happy I did – I like Jujutsu a lot now and will continue to use it. I think it's a step up from Git.

I enjoy the following features:

  • Compatible with Git, so it's possible to use Jujutsu while the rest of the team uses Git.
  • Everything you do is automatically put into a commit. In this way, they have removed Git's concept with a working directory, staging area and stashes.
  • Branches have no names, so you don't have to come up with a name when you want to start working on something new. When you push something, a name is automatically generated.
  • The order of starting work on a new commit and naming it you can choose yourself. You can wait with writing a commit description to later.
  • If you get a conflict, e.g. after you have done a rebase, you don't have to fix it immediately. You can clearly see in the log what commits have conflicts, and you can fix them whenever you want. In Git, you have to fix conflicts as soon as they occur.
  • Jujutsu logs everything you do and has an undo command so you can undo commands you have run. This makes it risk free to try to rebase or merge and see how it would turn out.

However, I don't think Jujutsu completely has solved Git's usability problem of having to remember what flags work with what sub-commands. In Jujutsu, I still constantly need to read the --help page for different sub-commands to look up if I'm supposed to use -t (to), -f (from), -c (change), -r (revset), -s (source), -d (destination), etc. I suppose there's a reason behind all these different flags for different sub-commands, but I haven't understood the logic behind it yet, so for me it appears as a bit random. On the other hand, I just learned that it's possible to tab complete the flags in the CLI. So that's something I will try and I already think it will fix my only pain point.

It's great that there's room for a new version control system. It has been a bit sad to see other version control systems, like Mercurial, dying off, leaving only Git. There's still room for innovation within the space and Jujutsu is a breath of fresh air. I hope it will continue to gain traction. I will do what I can to advocate for it.