← Back to context

Comment by diath

11 hours ago

> Yet another reason to use Jujutsu

And what would that reason be? You can git revert a git revert.

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.

  • Having no such thing as an uncommitted change seems like it would be a nightmare, but perhaps I'm just too git-oriented.

    • > 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.

  • Also JJ undo is there and easy to tell the model to use, I have it in my Claude.md

    • surely 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.

      1 reply →

Probably it actually ran git checkout or reset. As you say git revert only operates on committed snapshots so it will all be in the reflog

  • Yes, this exact scenario has happened to me a couple times with both Claude and Codex, and it's usually git checkout, more rarely git reset. They immediately realize they fucked up and spend a few minutes trying to undo by throwing random git commands at it until eventually giving up.

    • Yeap - this is why when running it in a dev container, I just use ZFS and set up a 1 minute auto-snapshot - which is set up as root - so it generally cannot blow it away. And cc/codex/gemini know how to deal with zfs snapshots to revert from them.

      Of course if you give an agentic loop root access in yolo mode - then I am not sure how to help...