Discard: throwing changes away
This cannot be undone, so it always goes through a confirmation modal.1
Choose what to discard
Hover over a file row in the Working copy panel and click the × button that appears.
If you have multiple files selected, the discard applies to the whole selection.
The Conflicted section has no such button.
2
Discard in the confirmation modal
The Discard changes? modal lists the files that will be discarded.
Click Discard to run it.

Hunk discard is only available on unstaged changes.
For staged changes, Unstage them first.
The button doesn’t appear for new files, for files deleted entirely, or while Ignore whitespace changes is on. Discard those at the file level instead.
Undo / Redo: reversing an operation
Click the Undo (↩) and Redo (↪) buttons at the left of the header toolbar. Hover over one and a tooltip shows which operation it will undo or redo.
What you can undo
Undo targets operations that change a ref (branch, tag, or HEAD).Can be undone
Can be undone
- Commit, Amend, and Squash
- Merge, rebase, reset, cherry-pick, and revert
- Checkout
- Creating, deleting, or renaming a branch
- Creating or deleting a tag
Can't be undone
Can't be undone
- Stage/Unstage, Discard, stash
- push, pull, fetch, and other remote syncing
- Submodule operations, and creating or deleting worktrees
- A merge, rebase, cherry-pick, or revert that ended in a conflict (handled with Abort/Continue)
Behavior worth knowing
- The undo stack remembers up to 20 operations, kept separately for each worktree.
- The stack lives only in memory, so it’s cleared when you restart the app.
- If the repository changes outside the app (from the terminal, for example), the affected entry is discarded and a notification appears.
- Undo/Redo is disabled while a merge or rebase is in progress.

