David Behar
Alejandro Rodriguez Rios
Muchísimas gracias buen hombre
Marcelo Sánchez
Mil gracias, se van directo a la carpeta favoritos.
El comando git stash te permite almacenar temporalmente (o guardar en un stash), los cambios que hayas efectuado en el código en el que estás trabajando para que puedas trabajar en otra cosa y, más tarde, regresar y volver a aplicar los cambios.
Guardar los cambios en stashes resulta práctico si tienes que cambiar rápidamente de contexto y ponerte con otra cosa, pero estás en medio de un cambio en el código y no tienes todo listo para confirmar los cambios.
Git stash lo puedes usar sin necesidad de crear una nueva rama o hacer un commit. Además, no pierdes tus cambios.
Cómo funciona el comando git stash
Para agregar los cambios al stash se utiliza el comando:
git stash
Podemos poner un mensaje en el stash, para así diferenciarlos en "git stash list" por si tenemos varios elementos en el stash. Esto con:
git stash save "mensaje identificador del elemento del stashed"
Ejemplo de uso de git stash
El stashed nos permite cambiar de rama o branch, hacer cambios, trabajar en otras cosas y, más adelante, retomar el trabajo con los archivos que teníamos en staging, pero que podemos recuperar, ya que los guardamos en el stash.
Por ejemplo:
$ git status On branch master Changes to be committed: new file: style.css Changes not staged for commit: modified: index.html $ git stash Saved working directoryandindex state WIP onmaster: 5002d47 our new homepage HEADisnowat5002d47 our new homepage $ git status On branch master nothingtocommit, working tree clean
Cómo ver los stash en git
Utiliza git stash pop. Este muestra los cambios guardados en el stash, también podemos mostrar los cambios de un stash determinado usando su índice que nos muestra el git stash.
El stashed se comporta como una stack de datos comportándose de manera tipo LIFO (del inglés Last In, First Out, «último en entrar, primero en salir»), así podemos acceder al método pop.
El método pop recuperará y sacará de la lista el último estado del stashed y lo insertará en el staging area, por lo que es importante saber en qué branch te encuentras para poder recuperarlo, ya que el stash será agnóstico a la rama o estado en el que te encuentres. Siempre recuperará los cambios que hiciste en el lugar que lo llamas.
Para recuperar los últimos cambios desde el stash a tu staging area utiliza el comando:
git stash pop
Para aplicar los cambios de un stash específico y eliminarlo del stash:
git stash pop stash@{<num_stash>}
Para retomar los cambios de una posición específica del stash puedes utilizar el comando:
git stash apply stash@{<num_stash>}
Donde el <num_stash> lo obtienes desde el git stash list
Cómo ver el listado de elementos en el stash
Para ver la lista de cambios guardados en stash y así poder recuperarlos o hacer algo con ellos podemos utilizar el comando:
git stash list
Retomar los cambios de una posición específica del Stash || Aplica los cambios de un stash específico.
Cómo crear una rama con el stash
Para crear una rama y aplicar el stash más reciente podemos utilizar el comando:
git stash branch <nombre_de_la_rama>
Si deseas crear una rama y aplicar un stash específico (obtenido desde git stash list) puedes utilizar el comando:
git stash branch nombre_de_rama stash@{<num_stash>}
Al utilizar estos comandos crearás una rama con el nombre <nombre_de_la_rama>, te pasarás a ella y tendrás el stash especificado en tu staging area.
Cómo eliminar elementos del stash
Para eliminar los cambios más recientes dentro del stash (el elemento 0), podemos utilizar el comando:
git stash drop
Pero si, en cambio, conoces el índice del stash que quieres borrar (mediante git stash list) puedes utilizar el comando:
git stash drop stash@{<num_stash>}
Donde el <num_stash> es el índice del cambio guardado.
Si, en cambio, deseas eliminar todos los elementos del stash, puedes utilizar:
git stash clear
Consideraciones:
Contribución creada con los aportes de: David Behar y Daniel Cabrera Ramirez.
David Behar
Alejandro Rodriguez Rios
Muchísimas gracias buen hombre
Marcelo Sánchez
Mil gracias, se van directo a la carpeta favoritos.
Angelo Paul Yenque Tume
==Aquí mis apuntes de Git Stash!==
Andres Mauricio Rojas Mantilla
Ya se me hacia raro no ver tu resumen :)
Carlos Felipe Saldarriaga Bejarano
tus aportes deberían ser comentario fijado en las clases!
Santi Dalmasso
git stash : Guarda el trabajo actual de manera temporal. (Archivos modificados o eliminados) git stash -u : Crea un stash con todos los archivos. (Añadiendo los creados Untracked) git stash save "mensaje" : Crea un stash con el mensaje especificado. git stash list : Permite visualizar todos los stash existentes. git stash clear : Elimina todos los stash existentes. git stash drop : Elimina el stash más reciente. El que tiene num_stash=0. git stash drop stash@{num_stash} : Elimina un stash específico. git stash apply : Aplica el stash más reciente. El que tiene num_stash=0. git stash apply stash@{num_stash} : Aplica los cambios de un stash específico. git stash pop : Aplica el stash más reciente y lo elimina. El que tiene num_stash=0. git stash pop stash@{num_stash} : Aplica los cambios de un stash específico y elimina lo stash. git stash branch nombre_de_rama : Crea una rama y aplica el stash mas reciente. git stash branch nombre_de_rama stash@{num_stash} : Crea una rama y aplica el stash especificado.
Consideraciones:
John Steven Bernal Gonzalez
muy buen aporte gracias!
Gerardo Alvarado Garcia
Gracias por el aporte
Juan Castro
ProfesorJuan Castro
Profesor:rocket::wink: La tomé de aquí: Flujo de trabajo profesional y Comandos oscuros de Git que te salvan el día...
JUAN SEBASTIAN RODRIGUEZ JIMENEZ
Que buen aporte, compañero
Ignacio Saccomano
Git stash es como decirle a un cambio "No, no avances quedate conmigo un rato que yo te digo qué hacer".
-git stash: "Vení acá un segundo."
-git stash drop: Lo matas (F)
-git stash pop: Volvé a donde estabas (el cambio post-commit vuelve al archivo)
-git stash list: "Mira usuario, ese es el cambio que tengo guardado."
-git stash branch x: "Andá a esa rama de ahí. No al master porque no te quieren ahí por ahora ;("
Andres Reyes Rincon
Un resumen gracioso y muy útil al mismo tiempo, me encantó 😂😅
Stalin Badillo
jajaja muy buen resumen
Si hacemos
git stash save "aqui va un mensaje para identificar el stash"
Podemos poner mensaje al stash, por si tenemos varios y asi diferenciarlos en git stash list.
De igual manera para llamar a un stash en particular y aplicarlo
git stash apply stash@{numero del stash}
El numero del stash lo podemos ver en la lista de stash
John Steven Bernal Gonzalez
git stash : Guardamos un estado temporal
git stash list : vemos la lista de stash que tenemos
git stash pop : restablecemos el estado que teniamos guardado
git stash branch (nombre de la rama ) : despues de haber creado un stash en memoria podemos crear una nueva rama con se cambio que esta en stash
git stash drop : borramos un stash ya guardado
Patricio Cabrera
Gracias. Git Stash es muy practico!
Jhosep Pérez
Gracias por los comandos.
Henry Alexander Velásquez Rosas
Apuntes locos 😅
Porfirio González López
Crees que sea buena idea apuntar el proceso?
Yo lo hacía antes, pero tardaba demasiado y no eran tan necesarios para comprender un tema.
Aún lo hago, pero cuando quiero tener un ejemplo de uso de concepto nuevo que estoy aprendiendo
Henry Alexander Velásquez Rosas
En su momento me ayudó mucho a comprender el funcionamiento de Git. Ahora tengo los apuntes en formato texto. Te los dejo por si quieres revisarlos Apuntes de Git y GitHub
Manuel Alejandro Hermoso
Massimo Di Berardino
Hola @hermosotech, que útil, no sabía que existía la posibilidad de dejar estos mensajes. Es útil cuando estás probando varias cosas y las quieres dejar en stach
JeanCarlos Atoche Pascual
hola hermosotech, gracias por el aporte, esa no me la sabia y se ve que ayuda en mucho
Santiago Botero Ruiz
Excelente explicación y si es un comando muy usado, hay una opción que acabo de leerla en la documentación oficial que me parece interesante y es el
git stash --patch
En donde el git te va mostrando la diferencia de cada uno de los archivos y te va preguntando que si lo quieres guardar en el stash. Es como mantener en memoria no todos los archivos modificados, pero si algunos de ellos y uno decide cuales.
Braian Peña
gracias por el aporte voy a probarlo.
René Sanchez
Muy bueno!!
Rafael Mora
GIT STASH
git stash = guarda los cambios que se han hecho al archivo (cambios en ustasged)
git stash list = muestra los stash disponibles (los cambios guardados)
git stash pop = te lanza el ultimo stash que guardaste y lo borra de la lista de stash
git stash pop indiceDelStash = te lanza el stash selececcionado por le indice // los stash se guardan desde arriba hacia abajo (lista) por lo tanto el ultimo stash guardado siempre sera del indice 0
git stash apply indice(opcional) = hace los mismo que git pop, pero no borra el stash seleccionado
git stash drop = elimina el ultimo stash agregado (stash indice 0)
git stash branch nombreDeLaRama = crea una nueva rama con el ultimo stash agregado // se necesita un stash guardado anteriormente //si nos vamos a otra rama el stash seguira en staging, no se sobreesriben con el checkout, es como si fuera un staging global
git stash branch nombreDeLaRama indiceDelStash = crea una nueva rama con el stash seleccionado por el indice
Carlos Aurelio Briceño Gomez
Git stash == ctrl + z
Johan Mosquera
Guardar los cambios y ponerlos en una rama
Daniel Cabrera Ramirez
git stash = guarda los cambios en memoria cuando no quieres hacer un commit aun git stash save “mensaje” = guarda un stach con mensaje git stash list = lista de todos stash git stash pop = trae de vuelta los cambios que teniamos guardados en el ultimo stash git stash apply stash@{n} = trae el stash que necesites con indicar su numero dentro de las llaves git stash drop = borra el ultimo stash git stash clear = borra todos los stash
María José Medina
Mi resumen de esta clase :D
Maria Belen Vicente Sanchez
muchas gracias por el aporte, un saludo
Andrés Enrique Sanabria Flores
Tan bonito que es el git stash :heart:
Otro comando útil es: git stash apply stash@{0} así pueden seleccionar cual stash aplicar de todos los que se hayan guardado.
Pueden ver un poquito más sobre como funciona en este link
Diego Rubio
maravilloso gracias
Luis Angel Cruz Ruiz
<git stash> Guarda los cambios en memoria <git stash list> Muestra la lista de los cambios que se han guardado <git stash pop> Muestra los cambios <git stash branch [rama]> Lleva los cambios a una nueva rama <git stash drop> Borra los cambios guardados en stash
Juan Camilo Alvarez Jurado
No vi este truco adicional en los otros aportes, entonces lo pongo. Crear un stash quita los cambios, ¿pero qué pasa si los quiero conservar y simplemente usar el stash como un "copiado de portapapeles"? Para crear un stash sin perder los cambios:
Stalin Badillo
Muy buen truco
David Jaramillo Saldarriaga
Se pueden tener varios stash a partir de un mismo commit:
Y el comando stash pop también sirve para seleccionar alguno de estos:
$ git stash pop stash@{1}
Hay que tener en cuenta que al hacer esto, hay un traslado de stash en git stash list y el que era el stash@{2} pasa a ser stash@{1}
Y para ver la diferencia entre el stash y el último commit sin tener que seleccionarlo con pop se puede usar git stash show. Por ejemplo con el stash@{2}
> git stash show -p stash@{2}
Esteban Guzmán Ramírez
Lo que guardo es stash es en ram o puedo apagar la laptop e irme a almorzar tranquilo guardando con Stash ?
Gabriel De Andrade
Todo es guardado en disco en la carpeta .git así que puedes ir a almorzar tranquilo :D
Pablo Aquino
Git Stash se guarda en tu disco, por lo que si apagas tu computadora y la vuelves a encender, aún tendrás los que pusiste Stash.
Stashed:
El stashed nos sirve para guardar cambios para después, Es una lista de estados que nos guarda algunos cambios que hicimos en Staging para poder cambiar de rama sin perder el trabajo que todavía no guardamos en un commit
Ésto es especialmente útil porque hay veces que no se permite cambiar de rama, ésto porque porque tenemos cambios sin guardar, no siempre es un cambio lo suficientemente bueno como para hacer un commit, pero no queremos perder ese código en el que estuvimos trabajando.
El stashed nos permite cambiar de ramas, hacer cambios, trabajar en otras cosas y, más adelante, retomar el trabajo con los archivos que teníamos en Staging pero que podemos recuperar ya que los guardamos en el Stash.
git stash
El comando git stash guarda el trabajo actual del Staging en una lista diseñada para ser temporal llamada Stash, para que pueda ser recuperado en el futuro.
Para agregar los cambios al stash se utiliza el comando:
git stash
Podemos poner un mensaje en el stash, para asi diferenciarlos en git stash list por si tenemos varios elementos en el stash. Ésto con:
git stash save "mensaje identificador del elemento del stashed"
Obtener elelmentos del stash
El stashed se comporta como una Stack) de datos comportándose de manera tipo LIFO (del inglés Last In, First Out, «último en entrar, primero en salir»), así podemos acceder al método pop.
El método pop recuperará y sacará de la lista el último estado del stashed y lo insertará en el staging area, por lo que es importante saber en qué branch te encuentras para poder recuperarlo, ya que el stash será agnóstico a la rama o estado en el que te encuentres, siempre recuperará los cambios que hiciste en el lugar que lo llamas.
Para recuperar los últimos cambios desde el stash a tu staging area utiliza el comando:
git stash pop
Para aplicar los cambios de un stash específico y eliminarlo del stash:
git stash pop stash@{<num_stash>}
Para retomar los cambios de una posición específica del Stash puedes utilizar el comando:
git stash apply stash@{<num_stash>}
Donde el <num_stash> lo obtienes desden el git stash list
Listado de elementos en el stash
Para ver la lista de cambios guardados en Stash y así poder recuperarlos o hacer algo con ellos podemos utilizar el comando:
git stash list
Retomar los cambios de una posición específica del Stash || Aplica los cambios de un stash específico
Crear una rama con el stash
Para crear una rama y aplicar el stash mas reciente podemos utilizar el comando
git stash branch <nombre_de_la_rama>
Si deseas crear una rama y aplicar un stash específico (obtenido desde git stash list) puedes utilizar el comando:
git stash branch nombre_de_rama stash@{<num_stash>}
Al utilizar estos comandos crearás una rama con el nombre <nombre_de_la_rama>, te pasarás a ella y tendrás el stash especificado en tu staging area.
Eliminar elementos del stash
Para eliminar los cambios más recientes dentro del stash (el elemento 0), podemos utilizar el comando:
git stash drop
Pero si en cambio conoces el índice del stash que quieres borrar (mediante git stash list) puedes utilizar el comando:
git stash drop stash@{<num_stash>}
Donde el <num_stash> es el índice del cambio guardado.
Si en cambio deseas eliminar todos los elementos del stash, puedes utilizar:
git stash clear
Consideraciones:
También puedes poner un comentario al stash para no olvidarte que tenias
$ git stash save "Cambio titulo de cabecera a Ingles, porque puedo" ------------------------------------------------------------------ Saved working directory and index state On english-version: Cambio titulo de cabecera a Ingles, porque puedo
Luego al volver a la rama podemos ver lo que teníamos claramente:
$ git stash list ----------------- stash@{0}: On english-version: Cambio titulo de cabecera a Ingles, porque puedo