Come eseguire lo stash pop specifico di stash in 1.8.3?


290

Ho appena aggiornato Git. Sono su Git versione 1.8.3.

Questa mattina ho provato a annullare un cambio 1 in profondità nello stack.

Ho corso git stash pop stash@{1}e ho ricevuto questo errore.

fatale: argomento ambiguo 'stash @ 1': revisione sconosciuta o percorso non nell'albero di lavoro. Usa '-' per separare i percorsi dalle revisioni, in questo modo: 'git [...] - [...]'

Ho provato circa 20 + varianti su questo, oltre a utilizzare applyinvece popsenza successo. Che cosa è cambiato? Qualcun altro lo incontra?


2
Hai provato a sfuggire a {}?
AlexDev,

20
Con Git 2.11 (Q4 2016), ora puoi usare git stash pop 1: vedi la mia risposta di seguito
VonC

Risposte:


359
git stash apply n

funziona dalla versione 2.11 di git

Risposta originale, eventualmente aiutando a eseguire il debug di problemi con la sintassi precedente che coinvolge escape della shell:

Come sottolineato in precedenza, le parentesi graffe potrebbero richiedere l'escape o la quotazione a seconda del sistema operativo, della shell, ecc.

Vedi " stash @ {1} è ambiguo? " Per alcuni suggerimenti dettagliati su cosa potrebbe andare storto e su come aggirarlo in varie shell e piattaforme.

git stash list
git stash apply stash@{n}

git stash applica la versione


15
Il mio unico problema con questa risposta è che la domanda chiede come fare popuno stash specifico e questo comando applyè lo stash invece di farlo scoppiare. La differenza è che un pop applica entrambi lo stash al codice ed elimina lo stash stesso.
Concedi Humphries il

Non funziona per me. Viene visualizzato l'errore "opzione sconosciuta: -encodedCommand"
Yuvraj Patil


Per favore, aggiorna la tua risposta, adessogit stash apply n
Hafiz Temuri,

179

Devi fuggire dalle parentesi graffe:

git stash pop stash@\{1\}

78

Se vuoi essere sicuro di non avere a che fare con le virgolette per la sintassi stash@{x}, usa Git 2.11 (Q4 2016)

Vedi commit a56c8f5 (24 ott 2016) di Aaron M Watson ( watsona4) .
(Unita da Junio ​​C Hamano - gitster- in commit 9fa1f90 , 31 ott 2016)

stash: consente di fare riferimento agli stash solo per indice

Invece di fare riferimento " stash@{n}" esplicitamente, è possibile fare semplicemente riferimento a " n".
La maggior parte degli utenti fa riferimento solo agli stash in base alla loro posizione nello stack di stash (quello che io chiamo "indice" qui).

La sintassi per il tipico stash ( stash@{n}) è leggermente fastidiosa e facile da dimenticare, e talvolta difficile da evitare correttamente in uno script .

Per questo motivo è auspicabile la capacità di fare cose con la scorta semplicemente facendo riferimento all'indice.

Così:

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

5
Grazie! Questa è probabilmente la risposta più pertinente per chiunque venga qui nel 2019.
Aaron Frary,


16

Come Robert ha sottolineato, le virgolette potrebbero fare il trucco per te:

git stash pop stash@"{1}"

12

Se nessuna delle precedenti funzioni funziona, le virgolette intorno allo stash stesso potrebbero funzionare per te:

git stash pop "stash@{0}"

4

Ho installato 2.22 e questo ha funzionato ..

git stash pop --index 1

Non funziona .. $ git stash pop --index 1 fatal: argomento ambiguo '1': revisione sconosciuta o percorso non nell'albero di lavoro. Usa '-' per separare i percorsi dalle revisioni, in questo modo: 'git <comando> [<revision> ...] - [<file> ...]'
Dave Doga Oz

2

La versione 2.11+ utilizza quanto segue:

git stash list

git stash apply n

n è il numero stash @ {12}


1

Prima controlla l'elenco: -

git stash list

copia l'indice che desideri far apparire dall'elenco di stash

git stash pop stash@{index_number}

per esempio.:

git stash pop stash@{1}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.