Portanto, não sei por que há tanta consternação nesse tópico. Posso nomear um stash com um push e o save obsoleto, e posso usar um regex para recuperá-lo com uma aplicação:
Método stash Git para usar um nome para aplicar
$ git stash push -m "john-hancock"
$ git stash apply stash^{/john-hancock}
Como mencionado anteriormente, o comando save foi descontinuado, mas ainda funciona, portanto, você pode usá-lo em sistemas mais antigos, onde não pode atualizá-los com uma chamada por push. Diferente do comando push, a opção -m não é necessária com o save.
// save is deprecated but still functional
$ git stash save john-hancock
Problemas com um pop e drop
Não acredito que funcione com um pop, mas acho que é porque o pop executa uma queda após a aplicação e o regex não é amigável com a queda. Isso é apenas um palpite. Eu não testei.
Este é o Git 2.2 e o Windows 10.
Prova Visual
Aqui está um belo GIF animado demonstrando o processo.
Sequência de eventos
O GIF é executado rapidamente, mas se você olhar, o processo é o seguinte:
- O comando ls mostra 4 arquivos no diretório
- touch example.html adiciona um quinto arquivo
- git stash push -m "john-hancock" -a (O -a inclui arquivos não rastreados)
- O comando ls mostra 4 arquivos após o stash, o que significa que o stash e a reinicialização implícita do disco funcionaram
- git stash apply stash ^ {/ john-hancock} roda
- O comando ls lista 5 arquivos, mostrando que o arquivo example.html foi trazido de volta, o que significa que o comando git stash apply funcionou.
Isso faz algum sentido?
Para ser franco, não tenho certeza de qual é o benefício dessa abordagem. É importante dar um nome ao esconderijo, mas não a recuperação. Talvez para criar um script do processo, seria útil, mas ainda é muito mais fácil colocar um esconderijo por nome.
$ git stash pop 3
$ git stash apply 3
Isso me parece muito mais fácil do que o regex.
git stash push -m stashname
é a sintaxe atual .git stash save stashname
foi descontinuado.