How can you tell if a git stash is no longer required?

Just make a diff and you will see.

git diff HEAD stash@{0}


You can use the following shell script to get git stash list prefixed with checkmarks if they have already been applied or there is no need to apply them as there is no difference.

git stash list | while read line; do \
  ref=${line%%:*}; \
  prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔  " || echo "   "); \
  echo "$prefix$line"; \
done

This will give you a list like:

✔  stash@{0}: WIP on develop: 77a1a66 send 'social.share' message via 'view-req-relay'...
   stash@{1}: WIP on bigcouch: 4bfa3af added couchdb filters...

And if you like it you can add it as a git alias like that:

git config --global --add alias.stash-list '!git stash list | while read line; do   ref=${line%%:*};   prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔  " || echo "   ");   echo "$prefix$line"; done'
git stash-list

(tested with bash and zsh)

Tags:

Git

Git Stash