Jujutsu (jj) VCS - Git, but better

25 Feb 2025

Jujutsu is a new VCS which aims to fix Git’s UX problems. I’ve been using it daily for a few months and it has completely replaced Git for me. The fact that it is compatible with Git repositories allows me to use it without affecting my coworkers, which still use Git.

For me it has been one of those tools that require some adaptation time at first. I went from “I don’t think this adds any value over vanilla git” to “I don’t know how I ever worked without this”.

I don’t say this lightly or as a Git newbie. I think that I am well versed in Git and its advanced concepts. I know my way around the basic commands such as add, commit, merge and checkout, but also around the more advanced ones such as rebase, reflog, bisect or cherry-pick. I helped to stablish Git workflows at multiple jobs and many times my coworkers ask me for help when something goes wrong.

jj mental model is much simpler than Git’s. It makes sense and it is easy to remember. Everything is a revision. There is no stash. No staging area. Just another revision like the previous one.

If you need to update an old revision just go ahead and make the change. Newer revisions will be automatically rebased. If there is a conflict you don’t have to solve it right now. The revision is just marked as conflicted, and you can edit it and solve the conflict at a different time.

You can create unnamed branches to test functionality. You can create unnamed commits to quickly make changes. You can easily switch to a different bookmark (what Git calls “branches”) to help a coworker without having to stash whatever you were doing. Remember, it is just another revision like the other ones.

One thing that I love is to create empty revisions that serve me as a checklist of what I have to do. I later go and edit them one by one implementing the required pieces and pushing them as required.

Another thing that I love is to have multiple stacked bookmarks (remember, those are like Git’s “branches”) so I can make a change in or rebase one of those bookmarks and get all the subsequent ones automatically updated and rebased. Then I can just jj git push and push them all at once.

As I said multiple times already:

jj is to Git what Tailwind is to CSS.

If you find jj interesting and want to take a look, here is a list of resources that have been extremely helpful for me: