Git stash seems to do a lot of what I want, except that it is a little hard to script, as the if you have no changes, then git stash; git stash pop will do some
git stash; git stash pop
It also works
git stash drop
like
git stash drop 5