Git Stash zweimal

93

Ich musste schnell die Git-Zweige wechseln, also lief ich git stash, aber ich musste es erneut ausführen, weil eine meiner Dateien bearbeitet werden musste.

Ich habe es also git stashzweimal ausgeführt und bin bereit, meine Dateien wieder zu bearbeiten. Ich bin gelaufen, git stash applyaber ich bin nicht davon überzeugt, dass alle Dateien, die ich gespeichert hatte, nicht gespeichert waren. Kann ich irgendetwas tun? Gibt es eine Möglichkeit zu überprüfen?

Wenn ich renne git stash show, sehe ich nur den letzten meiner beiden Git-Stashes.

Gibt es sowieso alles zu zeigen git stashes?

stephenmurdoch
quelle
4
git stash list. Wenn Sie zwei Verstecke gemacht haben, rufen Sie git stash popzweimal an.
Felix Kling
Hallo, du hast es behoben! Sie sollten es als Antwort setzen. Vielen Dank
stephenmurdoch

Antworten:

168

Sie können eine Liste aller Verstecke mit erhalten

git stash list

das wird dir so etwas zeigen

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Wenn Sie zwei Verstecke gemacht haben, rufen Sie einfach git stash popzweimal an. Im Gegensatz zu git stash apply, popgilt und entfernt das neueste Versteck.

Sie können auch auf einen bestimmten Vorrat verweisen, z

git stash show stash@{1}

oder

git stash apply stash@{1}
Felix Kling
quelle
Vielen Dank. Hat meinen Tag gerettet.
Stephenmurdoch
25
Wenn Sie git stash popzweimal möchten, weil Sie beide Stashes im selben Commit haben möchten, aber "Fehler: Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben:" auf Ihrem 2. git stash pop, können Sie: 1) git stash pop, 2) git add .und 3 ) git stash pop.
gabe
Das hat mir geholfen. Ich musste "git stash" und dann "git stash --all" ausführen, um einige neue nicht verfolgte Dateien zu speichern. Git Stash Pop zweimal zu machen funktionierte nicht. Ich habe erst das spätere Versteck zurückbekommen.
Leopold Kristjansson
0

Ich bin auf diese Situation gestoßen , ich habe zwei Stashes und Git Stash Pop gemacht, nur den letzten Stash. So tat ich

git stash list

git stash pop stash@{1}

Dies löste meinen ersten Vorrat und ich konnte alle meine Änderungen zurück sehen!

Waaheeda
quelle
0

Sie haben in der Post einige verschiedene Fragen gestellt, und andere Befragte haben auf einige von ihnen gute Antworten gegeben. Das Wichtigste, das aber nicht beantwortet wurde, ist Folgendes:

>> Ich bin nicht davon überzeugt, dass alle Dateien, die ich gespeichert hatte, nicht gespeichert waren. Kann ich irgendetwas tun? Gibt es eine Möglichkeit zu überprüfen?

Vergleichen Sie den Vorrat mit dem lokalen Baum

Ich denke, Sie möchten den Vorrat mit Ihrem lokalen Arbeitsbaum vergleichen . Sie können den Schalter -p auf den Befehl stash setzen und Sie sind gut:

git stash show -p

Wenn Sie nach einem bestimmten suchen, verwenden Sie einfach den Namen oder die ID des Git-Stashs aus der Stash-Liste:

git stash show -p stash@{3}

Vielleicht den Diff benutzen?

Wenn Sie wirklich daran interessiert sind, Ihre Git-Fähigkeiten zu verbessern, können Sie sich immer für einen Unterschied entscheiden. Um den Unterschied zwischen dem, was sich im Stash befindet, und dem, was im HEAD des Master-Zweigs eingecheckt ist, zu sehen, kann der folgende Unterschied verwendet werden:

git diff stash@ master

Ein weiterer nützlicher Befehl, mit dem Sie Änderungen für Elemente im Stash-Verlauf anzeigen können, die sich als nützlich erweisen könnten, ist --stat:

git stash list --stat

Aber ich denke, die einfache Antwort ist die richtige Antwort. Verwenden Sie einfach den Schalter -p, und Sie werden wahrscheinlich sehen, ob der von Ihnen zurückgestellte Vorrat zurückgeschoben wurde.

 git stash show -p stash@{3}
Cameron McKenzie
quelle