Skip to main content
Commit+ treats undo as a first-class workflow, not a tiny safety net. Press Cmd+Z to undo supported Git actions, and Cmd+Shift+Z to redo.

What’s undoable

  • Stage / unstage (file, hunk, and line level)
  • Commits
  • Stash save / drop / apply / pop
  • Local branch actions (create, delete, rename, switch)
  • Discard / remove (backed up in .git/macgit/undo)
  • History actions: cherry-pick, revert, reset, merge, rebase
  • Remote actions: pull rollback, published branch removal

Guarantees

  • An undo entry is registered only after the original Git action succeeds.
  • Every undo/redo refreshes repository state and posts a change notification.
  • Destructive inverses verify the expected state before running; on a failed precondition the entry is restored and an error is shown.
  • Undo stacks are not persisted across app launches.

Product direction

The long-term goal is that every meaningful mutating Git workflow in Commit+ either registers a safe undo entry or clearly explains why it cannot. The current implementation focuses on the action families listed above.