Shelf & Stash
Two tabs beside Commit. Both put changes aside; they differ in where the changes go.
Shelf
The shelf is IntelliJ's. Each shelved change is a patch under .idea/shelf/<name>/shelved.patch with the matching entry in .idea/shelf/'s XML, so a repository shelved from IntelliJ shows up here and vice versa. Shelves are per working copy, survive branch switches, and aren't part of git's own state.
- Shelve the ticked changes with a message, from the Commit tab.
- Unshelve (⇧⌘U): apply and remove, or apply and keep. Individual files can be unshelved on their own.
- Delete a shelf, and Import a patch file as a new shelf.
- Any patch under
.idea/shelf/that IntelliJ wrote is readable, including its description.

Unsafe shelf mutations are refused before the repository changes. The index is protected during the operation, and staged changes that aren't part of the shelf are preserved.
Stash
The Stash tab is native git stash.
- Stash with a message, keep index, and include untracked.
- Pop, Apply and Drop per entry.
- Stash to branch: turn a stash into a new branch checked out at the stash's base.

Smart checkout and Update Project use the stash too, transparently: they stash, do the switch or the update, then restore, and the stash entry is gone afterwards.