¿Cómo Git alijo pop alijo específico en 1.8.3?


290

Acabo de actualizar Git. Estoy en Git versión 1.8.3.

Esta mañana traté de sacar un cambio 1 en lo profundo de la pila.

Corrí git stash pop stash@{1}y obtuve este error.

fatal: argumento ambiguo 'stash @ 1': revisión desconocida o ruta no en el árbol de trabajo. Use '-' para separar las rutas de las revisiones, así: 'git [...] - [...]'

He intentado más de 20 variaciones en esto, así como usar en applylugar de popsin éxito. Que ha cambiado ¿Alguien más se encuentra con esto?


2
¿Intentaste escapar de los {}?
AlexDev

20
Con Git 2.11 (Q4 2016), ahora puede usar git stash pop 1: vea mi respuesta a continuación
VonC

Respuestas:


359
git stash apply n

funciona a partir de git versión 2.11

Respuesta original, posiblemente ayudando a depurar problemas con la sintaxis anterior que involucra escapes de shell:

Como se señaló anteriormente, las llaves pueden requerir escape o comillas dependiendo de su sistema operativo, shell, etc.

Consulte " stash @ {1} is ambiguous? " Para obtener algunos consejos detallados de lo que puede estar funcionando mal y cómo solucionarlo en varios shells y plataformas.

git stash list
git stash apply stash@{n}

git stash aplica la versión


15
Mi único inconveniente con esta respuesta es que la pregunta pregunta cómo hacer popun alijo específico y este comando applyes el alijo en lugar de reventarlo. La diferencia es que un pop aplica el alijo al código y elimina el alijo en sí.
Grant Humphries

No funciona para mi Obteniendo error "opción desconocida: -encodedCommand"
Yuvraj Patil


Actualice su respuesta, es ahoragit stash apply n
Hafiz Temuri

179

Necesitas escapar de las llaves:

git stash pop stash@\{1\}

78

Si desea asegurarse de no tener que lidiar con comillas para la sintaxis stash@{x}, use Git 2.11 (Q4 2016)

Ver commit a56c8f5 (24 de octubre de 2016) por Aaron M Watson ( watsona4) .
(Fusionada por Junio ​​C Hamano - gitster- en commit 9fa1f90 , 31 oct 2016)

stash: permite que las reservas sean referenciadas solo por índice

En lugar de hacer referencia a " stash@{n}" explícitamente, haga posible simplemente hacer referencia a " n".
La mayoría de los usuarios solo hacen referencia a las reservas por su posición en la pila de reservas (a lo que me refiero aquí como "índice").

La sintaxis para el alijo típico ( stash@{n}) es un poco molesto y fácil de olvidar, y a veces difícil de escapar correctamente en un script .

Debido a esto, es deseable la capacidad de hacer cosas con el alijo simplemente haciendo referencia al índice.

Entonces:

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

55
¡Gracias! Esta es probablemente la respuesta más relevante para cualquiera que venga aquí en 2019.
Aaron Frary


16

Como señaló Robert, las comillas podrían ser el truco para usted:

git stash pop stash@"{1}"

12

Si ninguno de los anteriores funciona, las comillas alrededor del alijo podrían funcionar para usted:

git stash pop "stash@{0}"

4

Tengo 2.22 instalado y esto funcionó.

git stash pop --index 1

No funciona. $ Git stash pop - índice 1 fatal: argumento ambiguo '1': revisión desconocida o ruta no en el árbol de trabajo. Use '-' para separar las rutas de las revisiones, así: 'git <comando> [<revisión> ...] - [<archivo> ...]'
Dave Doga Oz

2

La versión 2.11+ usa lo siguiente:

git stash list

git stash apply n

n es el número oculto @ {12}


1

Primero revise la lista: -

git stash list

copie el índice que desea que aparezca en la lista de ocultación

git stash pop stash@{index_number}

p.ej.:

git stash pop stash@{1}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.