versión de aplicación de git stash

Resuelto Lee asked hace 14 años • 8 respuestas

Tengo 2 sucursales: master | diseño

Trabajando en diseño, hice un alijo y cambié a master, hice algunos ajustes. Volví al diseño e hice stash applysolo para perder todos mis cambios en la rama de diseño.

Espero que todo mi trabajo esté guardado, ya que no los he borrado ni eliminado.

Si hago una lista de alijo obtengo 4 resultados:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Si lo intento git stash apply f2c0c72me sale un error:

fatal: Needed a single revision
f2c0c72: no valid stashed state found

¿Cómo puedo aplicar un alijo específico?

Lee avatar Dec 16 '09 03:12 Lee
Aceptado

Las llaves del alijo son en realidad los stash@{n}elementos de la izquierda. Entonces prueba:

git stash apply stash@{0}

(tenga en cuenta que en algunos shells es necesario citar "stash@{0}", como zsh, fish y powershell).

Desde la versión 2.11, es bastante fácil, puedes usar el número de pila N en lugar de usar stash@{n}. Entonces ahora en lugar de usar:

git stash apply "stash@{n}"

Puedes escribir:

git stash apply n

Para obtener una lista de alijos:

git stash list

De hecho stash@{0}, es una revisión en git a la que puedes cambiar... pero git stash apply ...deberías descubrir cómo aplicar DTRT a tu ubicación actual.

araqnid avatar Dec 15 '2009 20:12 araqnid

Para aplicar un alijo y eliminarlo de la lista de alijo, ejecute:

git stash pop stash@{n}

Para aplicar un alijo y mantenerlo en la caché, ejecute:

git stash apply stash@{n}
Dan Loewenherz avatar Dec 15 '2009 20:12 Dan Loewenherz

Desde la versión 2.11, es bastante fácil, puedes usar el número de pila N en lugar de decir "stash@{n}". Entonces ahora en lugar de usar:

git stash apply "stash@{n}"

Puedes escribir:

git stash apply n

Por ejemplo, en tu lista:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Si deseas aplicar stash@{1}puedes escribir:

git stash apply 1

De lo contrario, puede usarlo incluso si tiene algunos cambios en su directorio desde 1.7.5.1, pero debe asegurarse de que el alijo no sobrescriba los cambios de su directorio de trabajo; si lo hace, obtendrá un error:

error: Your local changes to the following files would be overwritten by merge:
        file
Please commit your changes or stash them before you merge.

En versiones anteriores a la 1.7.5.1, se negaba a funcionar si había un cambio en el directorio de trabajo.


Notas de la versión de Git:

  • Notas de la versión 2.11

El usuario siempre tiene que decir "stash@{$N}" al nombrar un solo elemento en la ubicación predeterminada del alijo, es decir, reflogs en refs/stash. El comando "git stash" aprendió a aceptar "git stash apply 4" como abreviatura de "git stash apply stash@{4}"

  • Notas de la versión 1.7.5.1

git stash apply" solía negarse a trabajar si había algún cambio en el árbol de trabajo, incluso cuando el cambio no se superponía con el cambio registrado en el alijo

Pau avatar Jun 09 '2017 06:06 Pau

Si uno está en una máquina con Windows y en PowerShell, es necesario citar un argumento como el siguiente:

git stash apply "stash@{0}"

...o para aplicar los cambios y eliminarlos del alijo:

git stash pop "stash@{0}"

De lo contrario, sin las comillas, podría aparecer este error:

fatal: argumento ambiguo 'stash@': revisión desconocida o ruta que no está en el árbol de trabajo.

jterry avatar Oct 16 '2015 16:10 jterry
git stash list 

La lista mostrará todos los elementos escondidos, por ejemplo:stash@{0}:,stash@{1}:,..,stash@{n}:

Luego seleccione el número n que denota alijo@{n}:

git stash apply n 

Por ejemplo:

git stash apply 1 

aplicará esos cambios ocultos particulares a la rama actual

Harshavardhan reddy. avatar Jul 09 '2019 13:07 Harshavardhan reddy.