Stashes are just another form of DAG node with their own special syntax and commands and quirks. I've already learned one set of commands for all that, why learn a second, less general set of commands?
I have started using stashes in one very specific case:
1. I realize I'm on the wrong branch 2. I've made no commits 3. The right branch has changes to files I've modified
git stash push
git checkout -b newbranch upstream/right
git stash apply
...verify...
git stash list
git stash drop [id]
Careful and safe, but not actually much faster than my old workflow, and I haven't the foggiest idea how to fix things up with stash if I've made several commits, if that's even a thing. git checkout -b dead/wrong
git add -A .
git commit -m "WIP"
git checkout -b newbranch
git rebase --onto upstream/right upstream/wrong
...verify...
# optional
# git branch -D dead/wrong
# git reset --soft HEAD~1
Depending on if you count the optional commands, that's one more or one less command. "Those aren't optional!" you might say - but yes, they are. I'll often merely amend my WIP commit into a real one instead of resetting. I'll often keep dead branches long term - perhaps some of my work relied on things that haven't landed on upstream/right yet, and can't be brought over sanely until upstream/wrong lands on upstream/right, or just for peace of mind that I might've forgotten something. Good dead branch names makes this less painful than... numbered stashes? Eww, gross.