Commit Graph

1 Commits

  • feat: git tooling for undo (#3914)
    ## Summary
    Introduces a “ghost commit” workflow that snapshots the tree without
    touching refs.
    1. git commit-tree writes an unreferenced commit object from the current
    index, optionally pointing to the current HEAD as its parent.
    2. We then stash that commit id and use git restore --source <ghost> to
    roll the worktree (and index) back to the recorded snapshot later on.
    
    ## Details
    - Ghost commits live only as loose objects—we never update branches or
    tags—so the repo history stays untouched while still giving us a full
    tree snapshot.
    - Force-included paths let us stage otherwise ignored files before
    capturing the tree.
    - Restoration rehydrates both tracked and force-included files while
    leaving untracked/ignored files alone.