Files & staging
Move changes between your working tree and index without losing the path back.
- Stage and unstage files
- Stage and unstage individual hunks
- Stage and unstage selected lines
- Discard or remove files, then restore them from a snapshot
Commit+ keeps a reversible history for the Git work you do in the app, so you can experiment with branches, commits, staging, remotes, and Git Flow without rebuilding the state by hand.
Undo history
0 of 3 actions completed
Stage selected lines
src/UndoManager.swift
Commit changes
Add recovery flow
Create branch
feature/undo
Apply an action to see it enter the undo history.
What you can undo
Each completed action becomes one understandable entry you can step back through.
Move changes between your working tree and index without losing the path back.
Try a history operation, then step back cleanly when the result is not what you wanted.
Branch and remote actions keep a reversible entry in the same Git-aware history.
Stash changes to switch context, then undo the stash action as a single step.
Undo Git Flow Start and Finish flows, including linked worktree creation.
Commit+ checks the expected HEAD, branch tip, clean state, worktree path, and lock state before destructive recovery operations. If the repository moved, the action stays in your Undo stack and explains why it cannot continue.
Git actions use the repository undo history, while typing and conflict-resolution edits stay scoped to their own editor context. The command always acts on the thing you are currently changing.