3 ms·
You're correct for an actual git revert, but it seems pretty clear that the original authors have mangled the story and it was actually either a "git checkout"
by jsnell 9mo ago
You're correct for an actual git revert, but it seems pretty clear that the original authors have mangled the story and it was actually either a "git checkout" or "git reset". The "file where 1-2 hours of progress had been accumulating" phrasing only makes sense if those were uncommitted changes.
And the reason jj helps in that case is that for jj there is no such thing as an uncommitted change.
- block_dagger 9mo agoHaving no such thing as an uncommitted change seems like it would be a nightmare, but perhaps I'm just too git-oriented.
- steveklabnik 9mo agoThings like the index become a workflow pattern, rather than a feature, if that makes any sense.
- eru 9mo ago> Having no such thing as an uncommitted change seems like it would be a nightmare, but perhaps I'm just too git-oriented. Why? What's the problem you see? The only problem I see is when you let these extra commits pollute the history reachable from any branch you care about. Let's look at the following: Internally, 'git stash' consists of two operations: one that makes an 'anonymous' commit of your files, and another that resets those files to whatever they were in HEAD. (That commit is anonymous in the sense that no branch points at it.) The git libraries expose the two operations separately. And you can build something yourself that works similarly. You can use these capabilities to build an undo/redo log in git, but without polluting any of the history you care about. To be honest, I have no clue how Jujutsu does it. They might be using a totally different design.
- fragmede 9mo ago> perhaps I'm just too git-oriented. The problem is git's index let's you write a bunch of unconnected code, then commit it separately. To different branches, even! This works great for stacking diffs but is terribly confusing if you don't know what you're doing.
- eru 9mo agoWell, git doesn't really commit 'to' a branch. You just build commits, and then later on you muck around with the mutable pointers that are branches.
- fragmede 9mo agoHow "to" do you want to make it? That description's totally disingenuous. "later on" makes it sound to a human like it takes any real amount of time or that it isn't basically instant and wrapped by up porcelean, and "muck around with" implies that there's anything more random or complicated to it then writing the sha to a file in the right place in the .git directory.
- MarkMarine 9mo agoAlso JJ undo is there and easy to tell the model to use, I have it in my Claude.md
- hu3 9mo agosurely Claude is much better at using git because of the massive training data difference. If it didn't undo git, it would do it with JJ either.
- Filligree 9mo agoIt does fine with jj. Sometimes better, because jj is much easier to use non-interactively.
- hu3 9mo agowhat do you mean non-interactively? Claude is great with git in command-line.
- MarkMarine 9mo agoActually I find it better with JJ. I have context7 mcp to help with commands and I’ve got an explicit Claude.md to direct it, but it’s more ambitious running stacked PRs and better at resolving conflicts.