~/projects/undo.sh

$ undo.sh

Initializing reversal engine...

[OK] Ready to undo anything.

Every mistake is just an
uncommitted change.

A patient, friendly toolkit for reversing what ought never to have been committed.

// concept

Reversibility, by design.

Every action in undo.sh produces an inverse. Save points are cheap, regret is cheaper, and there is always a way back. The shell remembers, so you don't have to.

// 01

Atomic snapshots

Each command writes a delta to the journal. Reversal is a single seek.

// 02

git-aware

Plays nicely with your existing workflow. No hooks, no surprises.

$ undo.sh --scope staged
# reverted 3 files
# 0 conflicts
// 03

Cheerful errors

No traceback walls. Just clear, kind suggestions.

tip Looks like you tried to undo without a save point. Run undo.sh --init first.

// state machine

A small, complete topology

// 04

Safe defaults

Two-step destructive actions. A confirm prompt is friendlier than a regret.

// 05

Tiny binary

217KB. Zero deps.

217KB

// quick install

One line. No config.

$ curl -sSL get.undo.sh | sh
# installs to ~/.local/bin
$ undo.sh --init
# save point created

“Code is grown, not written. Pruning is half the work.”

// changelog