News for hackers. Stuff that matters.
Re:A Coherent Vision for the Future of Version Control by aduwah on Sunday March 22, 2026 @03:05PM (#47480910)
The only reason I have not defaulted to jj already is the inability to be messy with it. Easy to make mistakes without "git add"
Re:A Coherent Vision for the Future of Version Control by dzaima on Sunday March 22, 2026 @03:57PM (#47481454)
But you do have the op log, giving you a full copy of the log (incl. the contents of the workspace) at every operation, so you can get out of such mistakes with some finagling.

You can choose to have a workflow where you're never directly editing any commit to "gain back autonomy" of the working copy; and if you really want to, with some scripting, you can even emulate a staging area with a specially-formatted commit below the working copy commit.

Re:A Coherent Vision for the Future of Version Control by llyama on Sunday March 22, 2026 @03:58PM (#47481469)
You can be messy. The lack of an explicit staging area doesn't restrict that. `jj commit` gives the same mental model for "I want to commit 2 files from the 5 I've changed".
Re:A Coherent Vision for the Future of Version Control by nchmy on Sunday March 22, 2026 @07:03PM (#47483259)
You're mistaken. I'm an absolute version control slob. JJ allows me to continue like that yet also collaborate with others. It tracks literally everything so I can not only split, squash, and rebase things to wherever they need to be, but can also rollback/restore/recover anything from either the repo-wide oplog or revision-specific evolog

You really ought to dive in deeper. jjui makes it all vastly simpler

Re:A Coherent Vision for the Future of Version Control by simonmic on Monday March 23, 2026 @04:55PM (#47494986)
You can turn off the auto-tracking, and add your files manually.
Re:A Coherent Vision for the Future of Version Control by yencabulator on Tuesday March 24, 2026 @03:36PM (#47507897)
https://docs.jj-vcs.dev/latest/config/#paths-to-automaticall...

Or treat the head commit as just a scratch space and the one before it as equivalent to git staged index, and use `jj squash PATH`, `jj squash -i` etc to "stage" things, or directly `jj commit -m "foo" PATHS` (or -i) to make a new commit with just wanted changed. This is what I do.