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 to discard that one file.
To discard several files, right-click the selection and choose Discard changes….
The Conflicted section has neither the button nor the menu item.
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.
Actions 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)
The undo stack
- 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.

