Adopting jj for my project
OCT 25, 2025 • 3 MIN. READ •
I've heard about jj for a while now, but I just haven't gotten to it yet.
A couple days ago, I saw this blog post by Steve Klabnik about jj
on Lobsters. Today I'm on a long flight from the US to Cambodia. So I grabbed Steve's jj tutorial
and made it available offline on my machine using mdbook for my long flight.
I went through the tutorial and I've already been using jj for my project now.
And here are some of the reasons why I think jj might just be the new tool I'm using for version control.
So what is jj?
Jujutsu or jj is a new distributed version control system (DVCS) that was designed to be
git compatible. jj was written in Rust by Martin von Zweigbergk who works on source control at Google.
It's a simpler and more intuitive DVCS, yet it's powerful (I have no idea how powerful it is yet,
I'm just getting started with jj, I quote Steve's jj book for this one).
What's so good about jj?
First things first, the most OP feature of jj for me is the jj undo.
In git, if you made a mistake, it will take a while to fix it, but jj undo? It's just awesome!
Next one is that I could use jj within an existing git repository without forcing other team members to
switch over. This makes adopting jj pretty easy.
In git you make changes first, stage your changes and then commit with a description of what the changeset is about.
In jj you could jj describe it first and then once you're done, you just do a jj new and you're done.
It's nice to have an intent before you start to work.
Another really good thing was how quickly I could jump into jj and effortlessly continue the same workflows I used in git — just moments after getting the basics down.
In fact, for this blog post, I used jj for version control. I jj git init inside my existing git repository. A git branch is a jj bookmark.
I could just jj bookmark track main@origin. And then jj new and jj bookmark create <bookmark-name> -r <revision>. I could push to GitHub via
jj git push --bookmark <bookmark-name>. Finally, I did a PR on GitHub just like I normally would with git, review and merge. And that's it!
Final thoughts
I was able to adopt jj in no time and I could already do what I did with git. I need to adjust how I think of version control
a little bit, but it's in a good way. I'm excited to use jj alongside git. I think I need to learn how to use jj in the jj way.
But, I'm no stranger to adopting new tools and I guess this is my starting point with jj and there should be a lot more to come.
Fun fact, I had to disable my nvim mapping jj to esc in insert mode ^^.
Further reading: