Top
Best
New

Posted by Bogdanp 8/31/2025

Jujutsu for everyone(jj-for-everyone.github.io)
442 points | 411 commentspage 5
notallm 8/31/2025|
thought i was gonna learn how to fight for a second lol
efilife 8/31/2025|
same, I'm kinda disappointed
monster_truck 9/1/2025||
I'm not using a cli to manage my code, it's 2025. I want gittower and gitlab, I want shortcut keys and first class support in _everything_, I'm a professional. If anybody paying me ever says I have to use it, I'll be using git anyways just like I did with clearcase, svn, mercurial, etc etc

A quick scan of this thread reveals no less than 4 show stopping missing features. By the way, where are submodules? I see sentences like "you can work on every branch at the same time" and think "wow this would be great if I really wanted to fuck something up, now show me how you'd track this down to unfuck it a few years later in an unfamiliar codebase. With a gui. For use as evidence in a criminal court case"

Keep plugging away. If this is how you think you can make the world of software a better place, I'm cheering for you.

steveklabnik 9/1/2025||
There are many different guis you can use with jj.

It’s true that submodules aren’t directly supported, but you can use the git commands to manage them hntil native support comes.

yencabulator 9/2/2025||
Oh, many? What's out there beyond GG? All I see is TUIs and VSCode plugins.

(I really like gg's promise of drag-and-drop editing, but I'm keen to try alternatives.)

steveklabnik 9/2/2025||
Sorry, yeah, I meant “non CLI interfaces”, I’m not sure if there are other “pure GUI” or whatever you call “non TUI non CLI plugin graphical interfaces”.
sfink 9/1/2025||
You can have most of that stuff, but it doesn't sound like that would sway you anyway. (And those 4 missing features may truly be showstoppers for you, in which case you're absolutely correct to stick with git.) There are early adopters and late adopters, and both have good reasons for being the one they are. You do you.
alabhyajindal 8/31/2025||
I don't know anything about Jujutsu but the Git equivalents for some of these commands are more readable:

  jj bookmark move main --to @-
  git add . 

  jj git init --colocate
  git init
Also using `jj git` everytime feels repetitive.
a022311 8/31/2025|
This feels like a troll, but I'll answer anyway.

The first command you mention is `jj bookmark move main --to @-`, which apart from the `@-` part, is easily read and does exactly what is written. It moves the main bookmark to the parent commit. The main difference to git here is that updating a branch is an explicit action. Jujutsu supports creating aliases and many users have a `jj tug` alias that moves the current closest branch to point to the parent commit. `git add .` just adds all changed files in the current directory to the current commit. That's an entirely different thing and Jujutsu takes care of doing that automatically.

The second command creates a git repository and while it is longer, I doubt the extra keystrokes will hurt you much. If it's too long, just alias it.

As for using `jj git`, since Jujutsu supports multiple backends, backend-specific commands require the `git` namespace. You generally only need it for cloning, pushing and fetching (with the option for aliases again). You'll rarely need to create a new repository or add a remote.

alabhyajindal 8/31/2025||
Thanks for your reply! I wasn't trying to be dismissive in my original comment. Just making an observation as someone new to Jujutsu.
a022311 8/31/2025||
In that case, I apologize for treating your comment that way. Written text can make communicating intent so hard...
ivanjermakov 8/31/2025|
> Jujutsu is easier to learn than Git. Git is known for its complicated, unintuitive user interface. Jujutsu gives you all the functionality of Git with a lot less complexity.

Being easier to use does not mean being easier to learn. Complicated workflows requiring deep understanding might be harder to learn because of a higher abstraction.

sfink 9/1/2025||
> Complicated workflows requiring deep understanding might be harder to learn because of a higher abstraction.

That's a fair complaint, and where other git porcelains have failed in the past.

I think the trick is that jj isn't raising the level of abstraction. Well, maybe in one place: there are change IDs in addition to commit IDs, and most of the time you'll want to be working with the change IDs. But even then, you could just use commit IDs, you'd just need to be looking them up all the time.

jj adds on a minimum of new functionality. It just turns out that if you make the already-existing git graph the object of your CLI commands, you can actually expose all of the operations you need with a much smaller set of primitives, even those for constructing your complicated workflows. git has accreted commands and flags to handle everything you need because it restricts its focus to a single commit or ref. Sometimes a command will use that commit to imply a whole branch, sometimes not. It avoids mutating things because that'd make you lose track of the holy commit, but then it has to provide lots of tools for when you want to mutate things. It has a staging area so that you can delay creating a commit until it's stable enough -- but now you have another concept. Stashes are similar.

(This actually undersells jj a bit. The op log and deferrable conflicts, for example, are bizarrely useful in practice even though they aren't fundamentally "needed". Nor do they raise the abstraction level. But going into that would dilute the message.)

Disposal8433 8/31/2025||
> deep understanding

It took me less than one day to switch from git.