Come accennato da @bentolo, puoi eliminare manualmente i file di cui si lamenta, cambiare ramo e quindi aggiungerli di nuovo manualmente. Ma personalmente preferisco rimanere "all'interno di git".
Il modo migliore per farlo è convertire la scorta in un ramo. Una volta che è un ramo, puoi lavorare normalmente in git usando le normali tecniche / strumenti correlati ai rami che conosci e ami. Questa è in realtà una tecnica generale utile per lavorare con gli stash anche quando non si dispone dell'errore elencato. Funziona bene perché una scorta è davvero un impegno nascosto (vedi PS).
Conversione di una scorta in un ramo
Quanto segue crea un ramo basato su HEAD quando lo stash è stato creato e quindi applica lo stash (non lo esegue il commit).
git stash branch STASHBRANCH
Lavorare con il "ramo stash"
Quello che fai dopo dipende dalla relazione tra la scorta e dove si trova il tuo ramo di destinazione (che chiamerò ORIGINALBRANCH).
Opzione 1 - Rebase ramo stash normalmente (molte modifiche rispetto allo stash)
Se hai apportato molte modifiche al tuo ORIGINALBRANCH, probabilmente stai trattando meglio STASHBRANCH come qualsiasi filiale locale. Effettua il commit delle modifiche in STASHBRANCH, riformulalo su ORIGINALBRANCH, quindi passa a ORIGINALBRANCH e riassegna / unisci le modifiche STASHBRANCH su di esso. Se ci sono conflitti, gestiscili normalmente (uno dei vantaggi di questo approccio è che puoi vedere e risolvere i conflitti).
Opzione 2 - Reimposta il ramo originale in modo che corrisponda allo stash (modifiche limitate dallo stash)
Se ti sei semplicemente nascosto mantenendo alcune modifiche in fasi, poi hai eseguito il commit, e tutto ciò che vuoi fare è ottenere le modifiche aggiuntive che non erano state messe in scena quando hai nascosto, puoi fare quanto segue. Tornerà al ramo e all'indice originali senza modificare la copia di lavoro. Il risultato finale saranno le modifiche aggiuntive alla tua copia di lavoro.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
sfondo
Gli stash sono commit come rami / tag (non patch)
PS, si è tentati di pensare a una scorta come una patch (proprio come si è tentati di pensare a un commit come una patch), ma una scorta è in realtà un commit contro l'HEAD quando è stata creata. Quando applichi / pop, stai facendo qualcosa di simile a selezionarlo con cura nel tuo ramo attuale. Tieni presente che rami e tag sono in realtà solo riferimenti a commit, quindi per molti versi stash, branch e tag sono solo modi diversi di puntare a un commit (e alla sua cronologia).
A volte è necessario anche quando non sono state apportate modifiche alla directory di lavoro
PPS, potresti aver bisogno di questa tecnica dopo aver usato stash con --patch e / o --include-untracked. Anche senza modificare le directory di lavoro, queste opzioni a volte possono creare una scorta che non puoi semplicemente applicare indietro. Devo ammettere di non capire appieno il motivo. Vedi http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html per qualche discussione.