522 Stimmen

Wie kann man mit Git den spezifischen Stash in Version 1.8.3 poppen?

Ich habe Git gerade aktualisiert. Ich bin bei Git-Version 1.8.3.

Heute Morgen habe ich versucht, eine Änderung 1 Ebene tief im Stapel zurückzuholen.

Ich habe git stash pop stash@{1} ausgeführt und diesen Fehler erhalten.

fatal: mehrdeutiges Argument 'stash@1': unbekannte Revision oder Pfad nicht im Arbeitsverzeichnis. Verwenden Sie '--', um Pfade von Revisionen zu trennen, wie folgt: 'git [...] -- [...]'

Ich habe etwa 20+ Variationen davon ausprobiert sowie apply anstelle von pop verwendet, ohne Erfolg. Was hat sich geändert? Hat das noch jemand erlebt?

692voto

Bob Gilmore Punkte 11006
git stash anwenden n

funktioniert ab Git Version 2.11

Ursprüngliche Antwort, die möglicherweise hilfreich ist, um Probleme mit der älteren Syntax zu debuggen, die Shell-Escapes beinhaltet:

Wie bereits erwähnt, müssen die geschweiften Klammern je nach Betriebssystem, Shell usw. möglicherweise escaped oder in Anführungszeichen gesetzt werden.

Siehe "stash@{1} ist mehrdeutig?" für einige ausführliche Hinweise, was schief gehen könnte und wie man es in verschiedenen Shells und Plattformen umgehen kann.

git stash liste
git stash anwenden stash@{n}

git stash anwenden Version

232voto

Vasiliy Punkte 15663

Sie müssen die Klammern escapen:

git stash pop stash@\{1\}

151voto

VonC Punkte 1117238

Wenn Sie sicherstellen möchten, dass Sie sich nicht mit Anführungszeichen für die Syntax stash@{x} befassen müssen, verwenden Sie Git 2.11 (Q4 2016)

Siehe Commit a56c8f5 (24. Okt 2016) von Aaron M Watson (watsona4).
(Merged von Junio C Hamano -- gitster -- in Commit 9fa1f90, 31. Okt 2016)

stash: erlaube nur Referenzierung von Stashes durch Index

Anstatt explizit auf "stash@{n}" zu verweisen, ist es möglich, einfach als "n" zu verweisen.
Die meisten Benutzer verweisen nur auf Stashes anhand ihrer Position im Stash-Stack (was ich hier als "Index" bezeichne).

Die Syntax für den typischen Stash (stash@{n}) ist etwas ärgerlich und leicht zu vergessen, und manchmal schwer ordnungsgemäß in einem Skript zu escapen.

Aufgrund dessen ist die Fähigkeit, Dinge mit dem Stash durch einfache Referenzierung des Index zu tun, wünschenswert.

Also:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1

73voto

Robert Brooker Punkte 1608

Aktualisieren

Von Git 2.11 verwenden Sie einfach die Nummer:

git stash apply 1

Ursprünglich

Auf Windows Powershell führe ich dies aus:

git stash apply "stash@{1}"

18voto

owenmck Punkte 378

Wie Robert bereits festgestellt hat, könnten Anführungszeichen das Richtige für Sie sein:

git stash pop stash@"{1}"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X