Remix.run Logo
▲ phildenhoff 4 hours ago

Finally!! Can’t wait for git lfs support to land, and I can move back to mostly using jj

▲nicce 4 hours ago | parent | next [-]

What are the benefits of jj if in the end everything is still on git backend?

▲yoz-y 3 hours ago | parent | next [-]

To me the main difference is that there is no staging (so no stashing needed), and conflicts are first class citizens. In practice this means that you can usually halt your work halfway, switch a commit, rebase everything onto head and continue working even if one of the branches off your commit has conflicts. In git you would have to resolve those before the rebase can finish.

Since conflict resolution these days mostly boils down to “hey LLM, resolve conflicts” this is much nicer.

Also jj tracks every change to the repo so undo works much better and is more readable than reflog

▲sunshowers 3 hours ago | parent | prev | next [-]

It is more powerful and easier to use, for both humans and agents.

▲saghm 2 hours ago | parent | prev [-]

My favorite feature is the built-in distinction between what's mutable and what's immutable in my history. I can freely modify any commits I make locally without issue, since no one else would be able to depend on them, but if I push something or fetch it from a coworker, I have the safety of not needing to be careful when doing the equivalent of an amend or rebase because it will fail with an error telling me to use a flag to bypass the immutability protection if that's what I actually want.

Not having to stage changes in lieu of them automatically getting picked up was a bit of a learning curve for me, but now that I've gotten used to it I like it a lot better and I don't think I could go back. The equivalent of the reflog pretty much always has my changes in it if I accidentally lose them without manually saving due to the snapshotting, and I have no need for a stash because commits and branches are essentially just recording a checkpoint rather than being things that feel "heavyweight".

As an added bonus, dealing with conflicts is a lot less annoying because each commit records its conflicts separately, so fixing them doesn't require doing a stateful pipeline of changes in a big rebase; I can just do them piecemeal, in any order I want, and even just check out other stuff and work on them before coming back later if I feel like it.

I was "that guy" who would sometimes have coworkers come for help with git problems (https://xkcd.com/1597/ alt text). I've forgotten most of that knowledge (and all of that muscle memory) and didn't have to learn nearly as much to replace it with the ability to do a lot more with a lot fewer mistakes.

▲IshKebab 3 hours ago | parent | prev [-]

Are they just going to copy LFS? That's a real shame. I had some hope they would do something that isn't as shit. Oh well.

I guess they'll just copy submodules too. Kind of feels like there's little point using it if it's just going to copy Git's mistakes.