Skip to content

Stash list

Stashes aren't tucked away in a separate panel — they're just another entry in the sidebar, listed alongside your branches and tags, with their own actions (apply, pop, drop) available through the command palette.

The sidebar lists the stashed changes

Every stash you've pushed shows up in its own sidebar section, most recent first — no separate "stash panel" to open, no memorising indices. Selecting one lets you run its actions from the command palette.

The sidebar lists the stashed changes

Captured from the running app by this scenario.

Do this

  1. Expand the stashes sidebar section

You should see

  • The sidebar lists 2 stashes

Stashing puts your work aside and clears the tree

The toolbar's Stash button takes everything you have in progress — including untracked files — and parks it, leaving a clean working tree to switch branches or pull. Whatever you typed in the graph's work-in-progress row becomes the stash's own message, so the pile stays readable; leave it empty and it is named after the branch you were on.

Stashing puts your work aside and clears the tree

Captured from the running app by this scenario.

Do this

  1. Name the work in progress wip: half-finished config work
  2. Stash the working changes

You should see

  • The repository has 3 stashes
  • The newest stash is named wip: half-finished config work
  • The working tree is clean
  • No error notification is displayed

Naming a stash and choosing whether to include untracked files

Selecting the working tree opens the same panel a commit would, with a Stash tab next to it: an optional message, and a checkbox for whether untracked files come along — checked by default, since that's what the toolbar's own Stash button always does, but visible and yours to turn off here rather than a silent default you never see.

Naming a stash and choosing whether to include untracked files

Captured from the running app by this scenario.

Do this

  1. Select the working-tree changes in the graph
  2. Switch the staging panel to the stash tab
  3. Type wip: keep tracked changes only into the stash message field
  4. Uncheck the include-untracked-files option
  5. Submit the stash form

You should see

  • The repository has 3 stashes
  • The newest stash is named wip: keep tracked changes only
  • The file IN_PROGRESS.md is untracked in the working tree

Renaming a stash rewrites its message

A stash's message is editable the same way a commit's own is: select it, click the message to turn it into an input, and confirm. Nothing else about the stash changes — it stays the same entry at the same position in the stack, just under a name that says why you kept it.

Renaming a stash rewrites its message

Captured from the running app by this scenario.

Do this

  1. Expand the stashes sidebar section
  2. Rename the newest stash to reviewed: keep for later

You should see

  • The newest stash is named reviewed: keep for later
  • The repository has 2 stashes

Undoing a stash pop restores the stash

Popping a stash from the command palette goes through the same undo history as any other action: ⌘Z brings the stash right back, at the same message and the same changes it had before it was applied and removed.

Do this

  1. Select the working-tree changes in the graph
  2. Discard the changes to config.yml
  3. Select the stash@{0} commit in the graph
  4. Open the command palette
  5. Run the command palette action stash-pop
  6. Undo the last action

You should see

  • The repository has 2 stashes
  • The repository has 1 stash
  • The repository has 2 stashes

Undoing a stash drop restores the stash

Dropping a stash is undoable too — the deleted stash comes back exactly as it was, without needing a reflog to find it.

Do this

  1. Select the stash@{0} commit in the graph
  2. Open the command palette
  3. Run the command palette action stash-drop
  4. Undo the last action

You should see

  • The repository has 2 stashes
  • The repository has 1 stash
  • The repository has 2 stashes

This page is generated from apps/e2e/features/stash-stack.feature, the end-to-end test that drives the feature it describes.

MIT licensed · Screenshots exported from the real app by the end-to-end suite.