Wie von @bentolo erwähnt, können Sie die beanstandeten Dateien manuell löschen, Zweige wechseln und sie dann manuell wieder hinzufügen. Aber ich persönlich bleibe lieber "in git".
Der beste Weg, dies zu tun, besteht darin, den Stash in einen Zweig umzuwandeln. Sobald es sich um einen Zweig handelt, können Sie mit den normalen Techniken / Werkzeugen, die Sie kennen und lieben, normal in Git arbeiten. Dies ist eine nützliche allgemeine Technik für die Arbeit mit Verstecken, auch wenn Sie den aufgeführten Fehler nicht haben. Es funktioniert gut, weil ein Stash wirklich ein Commit unter der Decke ist (siehe PS).
Konvertieren eines Stashs in einen Zweig
Im Folgenden wird ein Zweig basierend auf dem HEAD erstellt, als der Stash erstellt wurde, und dann wird der Stash angewendet (er schreibt ihn nicht fest).
git stash branch STASHBRANCH
Arbeiten mit dem "Stash Branch"
Was Sie als Nächstes tun, hängt von der Beziehung zwischen dem Stash und dem Ort ab, an dem sich Ihr Zielzweig (den ich ORIGINALBRANCH nennen werde) jetzt befindet.
Option 1 - Stash-Zweig normal neu starten (viele Änderungen seit Stash)
Wenn Sie viele Änderungen an Ihrem ORIGINALBRANCH vorgenommen haben, behandeln Sie STASHBRANCH wahrscheinlich am besten wie jede lokale Niederlassung. Übernehmen Sie Ihre Änderungen in STASHBRANCH, setzen Sie sie erneut auf ORIGINALBRANCH, wechseln Sie dann zu ORIGINALBRANCH und starten Sie die STASHBRANCH-Änderungen erneut. Wenn es Konflikte gibt, behandeln Sie diese normal (einer der Vorteile dieses Ansatzes besteht darin, dass Sie Konflikte sehen und lösen können).
Option 2 - Setzen Sie den ursprünglichen Zweig zurück, um ihn an den Stash anzupassen (begrenzte Änderungen seit dem Stash).
Wenn Sie nur etwas gespeichert haben, während Sie einige bereitgestellte Änderungen beibehalten haben, dann festgeschrieben, und alles, was Sie tun möchten, ist, die zusätzlichen Änderungen zu erhalten, die beim Speichern nicht bereitgestellt wurden. Sie können Folgendes tun. Es wird zu Ihrem ursprünglichen Zweig und Index zurückgeschaltet, ohne dass Ihre Arbeitskopie geändert wird. Das Endergebnis sind Ihre zusätzlichen Änderungen in Ihrer Arbeitskopie.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
Hintergrund
Stashes sind Commits wie Zweige / Tags (keine Patches)
PS: Es ist verlockend, sich einen Stash als Patch vorzustellen (genau wie es verlockend ist, sich ein Commit als Patch vorzustellen), aber ein Stash ist tatsächlich ein Commit gegen den HEAD, als es erstellt wurde. Wenn Sie sich bewerben / popen, tun Sie etwas Ähnliches wie das Kirschpflücken in Ihrem aktuellen Zweig. Beachten Sie, dass Zweige und Tags eigentlich nur Verweise auf Commits sind. In vielerlei Hinsicht sind Stashes, Zweige und Tags nur verschiedene Arten, auf ein Commit (und seinen Verlauf) zu verweisen.
Wird manchmal benötigt, auch wenn Sie keine Änderungen am Arbeitsverzeichnis vorgenommen haben
PPS, Möglicherweise benötigen Sie diese Technik, nachdem Sie nur stash mit --patch und / oder --include-untracked verwendet haben. Selbst ohne die Arbeitsverzeichnisse zu ändern, können diese Optionen manchmal einen Stash erstellen, den Sie nicht einfach zurück anwenden können. Ich muss zugeben, ich verstehe nicht ganz warum. Weitere Informationen finden Sie unter http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html .