Comme mentionné par @bentolo, vous pouvez supprimer manuellement les fichiers dont il se plaint, changer de branche, puis les rajouter manuellement. Mais je préfère personnellement rester "dans git".
La meilleure façon de procéder est de convertir la réserve en branche. Une fois qu'il s'agit d'une branche, vous pouvez travailler normalement dans git en utilisant les techniques / outils normaux liés aux branches que vous connaissez et aimez. C'est en fait une technique générale utile pour travailler avec des stashes même si vous n'avez pas l'erreur répertoriée. Cela fonctionne bien car un stash est vraiment un commit sous les couvertures (voir PS).
Conversion d'une réserve en branche
Ce qui suit crée une branche basée sur le HEAD lorsque le stash a été créé et applique ensuite le stash (il ne le valide pas).
git stash branch STASHBRANCH
Travailler avec la "branche cachée"
Ce que vous faites ensuite dépend de la relation entre la cachette et où se trouve votre branche cible (que j'appellerai ORIGINALBRANCH).
Option 1 - Rebase stash branch normalement (beaucoup de changements depuis stash)
Si vous avez effectué de nombreux changements dans votre ORIGINALBRANCH, il vaut probablement mieux traiter STASHBRANCH comme n'importe quelle succursale locale. Validez vos modifications dans STASHBRANCH, rebasez-le sur ORIGINALBRANCH, puis passez à ORIGINALBRANCH et rebase / fusionnez les modifications STASHBRANCH dessus. S'il y a des conflits, gérez-les normalement (l'un des avantages de cette approche est que vous pouvez voir et résoudre les conflits).
Option 2 - Réinitialiser la branche d'origine pour qu'elle corresponde à la réserve (changements limités depuis la réserve)
Si vous venez de mettre en cache tout en conservant certaines modifications par étapes, puis que vous les avez validées, et que tout ce que vous voulez faire est d'obtenir les modifications supplémentaires qui n'ont pas été mises en scène lorsque vous avez stocké, vous pouvez effectuer les opérations suivantes. Il reviendra à votre branche et index d'origine sans changer votre copie de travail. Le résultat final sera vos modifications de réserve supplémentaires dans votre copie de travail.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
Contexte
Les stashes sont des commits comme des branches / balises (pas des correctifs)
PS, il est tentant de penser à un stash comme un patch (tout comme il est tentant de penser à un commit comme un patch), mais un stash est en fait un commit contre le HEAD quand il a été créé. Lorsque vous appliquez / pop, vous faites quelque chose de similaire à la sélection dans votre branche actuelle. Gardez à l'esprit que les branches et les balises ne sont en réalité que des références à des commits, donc à bien des égards, les stashes, les branches et les balises ne sont que des façons différentes de pointer vers un commit (et son historique).
Parfois nécessaire même lorsque vous n'avez pas apporté de modifications au répertoire de travail
PPS, Vous pouvez avoir besoin de cette technique après avoir simplement utilisé stash avec --patch et / ou --include-untracked. Même sans modifier les répertoires de travail, ces options peuvent parfois créer une réserve que vous ne pouvez pas simplement réappliquer. Je dois admettre que je ne comprends pas entièrement pourquoi. Voir http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html pour une discussion.