DEV Community

Mu Micro
Mu Micro

Posted on

git stash list gives you cryptic IDs — so I built stashpick

The problem

Running git stash list gives you cryptic stash@{N} IDs and terse messages; recovering the right stash means running git stash show -p stash@{N} for each candidate until you find what you need.

If you've hit this, you know the drill — git stash list, squint at the messages, run git stash show -p stash@{2}, repeat.

As a solution, I created stashpick

Interactive arrow-key git stash browser — preview diffs and apply, pop, or drop stashes without memorizing stash IDs

Zero dependencies. Run immediately:

npx stashpick
Enter fullscreen mode Exit fullscreen mode

Output:

$ npx stashpick

 stashpick  3 stashes                          a=apply  p=pop  d=drop  q=quit
 ref           date        message              │ diff preview
──────────────────────────────────────────────────────────────────────────────
▶ stash@{0}   2026-05-27  WIP on main: login   │ diff --git a/src/auth.js b/src/auth.js
  stash@{1}   2026-05-24  feat: refactor api   │ @@ -12,6 +18 @@
  stash@{2}   2026-05-20  quick css tweak      │ +  async login(email, password) {
                                                │ +    const res = await fetch("/api/auth"
──────────────────────────────────────────────────────────────────────────────
 1/3  stash@{0}  WIP on main: login form
Enter fullscreen mode Exit fullscreen mode

How it works

Pure Node.js: shells out to git stash list and git stash show -p via child_process, caches diff output per stash, and renders a two-pane terminal UI using raw ANSI escape codes and readline raw mode — zero npm dependencies.

Why I built it

Found repeated complaints on r/git and HN about losing stash contents — developers stash work, forget what is in each one, and end up cherry-picking blindly or abandoning stashes entirely. Existing solutions like lazygit are full git UIs requiring separate installation; no zero-dependency npx tool fills the gap of a focused, single-purpose stash browser.

Try it

npx stashpick --help
Enter fullscreen mode Exit fullscreen mode

Part of µ micro — one new developer tool, shipped every day. All tools are zero-dependency Node.js.

Top comments (0)