O Git stash parece fazer muito do que eu quero, exceto que é um pouco difícil de script, pois se você não tiver alterações, git stash; git stash popfará algo diferente do que se você tiver alterações em seu repositório.
Parece que git stash createé a resposta para esse problema, e tudo funciona, exceto por uma coisa ... Não consigo me livrar do estoque criado. Existe alguma maneira de se livrar do esconderijo?
Para deixar 100% claro o que estou fazendo:
Crie o stash:
~/tmp/a(master) $ git stash create
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message
Use o esconderijo:
~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
Exclua o stash: (exceto que este último bit não funciona)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
git stash applyque funcionou. As git applytentativas de ler um arquivo de patch local, que não existe. Para ser honesto, provavelmente não deveria estar lá, e nunca poderia ter funcionado. Estou vagamente tentado a removê-lo da questão, mas, como ele ajudou muitos em sua forma atual, vou deixá-lo como está.

git applyexecução na segunda caixa de código no momento da redação deste documento não aplicava um patch - a mensagem de erro na saída informava isso. Então, na verdade, você tentou criar um stash (que não funcionou, veja os comentários abaixo), aplique um stash que não foi criado e solte um stash que não foi criado. É por isso que nada que você fez funcionou.