Conforme mencionado por @bentolo, você pode excluir manualmente os arquivos dos quais está reclamando, alternar entre os ramos e adicioná-los de volta manualmente. Mas eu pessoalmente prefiro ficar "dentro do git".
A melhor maneira de fazer isso é converter o stash em um branch. Uma vez que é um branch, você pode trabalhar normalmente no git usando as técnicas / ferramentas normais relacionadas ao branch que você conhece e adora. Esta é na verdade uma técnica geral útil para trabalhar com stashes, mesmo quando você não tem o erro listado. Funciona bem porque um stash é realmente um commit nos bastidores (veja PS).
Converter um esconderijo em um galho
O seguinte cria um branch baseado no HEAD quando o stash foi criado e então aplica o stash (não o confirma).
git stash branch STASHBRANCH
Trabalhando com o "branch stash"
O que você faz a seguir depende da relação entre o stash e onde seu branch de destino (que chamarei de ORIGINALBRANCH) está agora.
Opção 1 - Rebase do branch stash normalmente (muitas mudanças desde o stash)
Se você fez muitas mudanças em seu ORIGINALBRANCH, então provavelmente é melhor tratar o STASHBRANCH como qualquer filial local. Faça o commit de suas alterações no STASHBRANCH, rebase-o em ORIGINALBRANCH, depois mude para ORIGINALBRANCH e rebase / mescle as mudanças STASHBRANCH sobre ele. Se houver conflitos, trate-os normalmente (uma das vantagens dessa abordagem é que você pode ver e resolver conflitos).
Opção 2 - Redefinir o branch original para corresponder ao stash (alterações limitadas desde o stash)
Se você apenas armazenou em stash enquanto mantém algumas alterações em staged, então efetue o commit, e tudo que você deseja fazer é obter as alterações adicionais que não estavam armazenadas em stash, você pode fazer o seguinte. Ele retornará ao seu branch e índice originais sem alterar sua cópia de trabalho. O resultado final serão suas mudanças adicionais em sua cópia de trabalho.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
fundo
Stashes são commits como branches / tags (não patches)
PS, É tentador pensar em um stash como um patch (assim como é tentador pensar em um commit como um patch), mas um stash é na verdade um commit contra o HEAD quando foi criado. Quando você aplica / pop, está fazendo algo semelhante a selecioná-lo em seu branch atual. Tenha em mente que branches e tags são realmente apenas referências a commits, então de muitas maneiras, stashes, branches e tags são apenas maneiras diferentes de apontar para um commit (e seu histórico).
Às vezes é necessário, mesmo quando você não fez alterações no diretório de trabalho
PPS, você pode precisar desta técnica depois de usar o stash com --patch e / ou --include-untracked. Mesmo sem alterar os diretórios de trabalho, essas opções às vezes podem criar um stash que você não pode simplesmente aplicar de volta. Devo admitir que não entendo totalmente o porquê. Veja http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html para alguma discussão.