Stashes

A stash is a temporary snapshot of your working-tree changes, parked somewhere safe so you can clean the working tree without losing anything. It is the classic tool for "I need to switch branches right now but I also don't want to commit this half-finished thing". The Stashes section lists every stash the repository has, lets you create new ones, and gives you three ways to bring them back.

Layout

The section is arranged vertically, with up to four stacked areas from top to bottom: a header bar, an optional save form, the stash list, and — when a stash is selected — a detail panel with that stash's files.

When the repository has no stashes at all, the list and detail areas are replaced by a centered empty state with an archive icon and the message "No stashes". The header bar is still visible so you can create the first stash from the same place every time.

Creating a Stash

At the top of the section sits a single button: Stash Changes(plus icon). Clicking it toggles a small inline form just below the header with one text field and a Save button:

  • Message: a short description of what you are parking. Placeholder text reads "Stash message...". The message is required — Save stays disabled until you have typed at least one non-whitespace character.
  • Save: creates the stash and closes the form. Pressing Enter in the message field submits it without needing to click the button.

Creating a stash always moves the current uncommitted changes off the working tree onto the stash entry — the working tree is clean immediately afterwards. If the operation fails for any reason, a red error banner appears at the top of the section with the underlying message; closing the banner (X button on the right) dismisses it.

The Stash List

Each row in the list is a single stash entry and shows the same fixed anatomy:

  • Archive icon: a small icon on the left, marking the row as a stash entry.
  • Message: the description you gave when you created it, truncated if too long.
  • Meta line: below the message, a short line with the stash reference (stash@{0}, stash@{1}, …), the branch the stash was taken on if recorded, and the relative time since the stash was created.
  • Row actions (on hover): three small icon buttons on the right, covered in the next card.

Clicking anywhere on the row (outside the action buttons) selects the stash. Clicking the selected row again deselects it. A selected stash is highlighted so it stays visible even as the list scrolls.

Pop, Apply, and Drop

Hovering a stash row reveals three action buttons on the right. They cover every useful thing you can do to a stash:

  • Pop (downward arrow icon, tooltip "Pop (apply & remove)"): applies the stash to the current working tree and then deletes the stash entry in one step. Use Pop when you are sure you want the stash's changes back and will not need the stash again.
  • Apply (play icon, tooltip "Apply (keep stash)"): applies the stash to the working tree but leaves the stash entry in the list. Use Apply when you want to re-use the same stash on multiple branches, or when you want to keep a safety copy until you are sure the apply worked.
  • Drop (trash icon, tooltip "Drop"): deletes the stash entry without touching the working tree. Use Drop to clean up stashes you no longer care about.

When Pop or Apply finds that restoring the stash would overlap with your current working tree in a way that creates conflicts, Tigrister hands off to the same in-app conflict resolver it uses for merges. That flow is covered in the Merge & Conflict Resolution sub-section. Nothing is silently overwritten: if there is a conflict, you always get the chance to resolve it line by line.

Errors during any of these three operations — invalid stash, disk issue, anything else — are shown in the red error banner at the top of the section with a close button, just like stash creation failures.

The Detail Panel

When a stash is selected, a detail panel appears at the bottom of the section — capped at about 40% of the section height, with its own scroll. It contains:

  • Header: an archive icon and the stash message.
  • Meta row: the stash reference (stash@{N}), the branch the stash was taken on prefixed with "on" (if recorded), and the relative time.
  • Files changed list: a header "Files changed (N) — click to view diff:" followed by every file the stash touches, with its status letter on the left. If the stash records no file changes the detail panel shows a neutral "No file changes in this stash" line instead.

Stash Diff Drill-down

Clicking a file in the detail panel replaces the list view with a dedicated diff drill-down — the same pattern as the commit diff view in the History section. It contains:

  • Info bar: an archive icon, the stash reference (stash@{N}), and the stash message. Two buttons on the right: Collapse (down chevron) returns to the list + detail layout while keeping the stash selected, and Close (X) clears the stash selection entirely.
  • File strip: the full list of files in the stash, with the currently viewed one highlighted. Click another file to jump to its diff without leaving the drill-down.
  • Diff viewer: the same side-by-side / unified diff viewer used everywhere else in the panel, with binary-file handling and view-mode toggle. It fills the rest of the available space.

This drill-down is read-only — it is a preview of what is inside the stash, not a place to edit or partially apply. To bring any of the changes back, close the drill-down and use Pop or Apply on the stash entry itself.