versión de aplicación de git stash
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 apply
solo 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 f2c0c72
me sale un error:
fatal: Needed a single revision
f2c0c72: no valid stashed state found
¿Cómo puedo aplicar un alijo específico?
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.
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}
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
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.
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