Editado 2 Hace unas semanas por ExtremeHow Equipo Editorial
GitAlmacénWindowsMacLinuxLínea de comandosDesarrolloControl de VersionesControl de FuenteFlujo de trabajoProductividad
Traducción actualizada 2 Hace unas semanas
Git es uno de los sistemas de control de versiones más utilizados en el mundo del desarrollo de software. Fue creado por Linus Torvalds en 2005 para el desarrollo del kernel de Linux. Desde entonces, ha sido usado en proyectos de software de todos los tamaños, por equipos de desarrolladores... a veces incluso por desarrolladores que trabajan solos. Git te ayuda a rastrear versiones de código, colaborar con múltiples desarrolladores y asegurar que siempre puedes volver a versiones anteriores de tu software cuando sea necesario.
Cuando trabajas en un proyecto gestionado por Git, puede haber momentos en los que necesites cambiar de branch. Por ejemplo, podrías estar trabajando en una nueva funcionalidad y de repente surge un informe de un error crítico que necesita ser arreglado de inmediato. En tales casos, querrás cambiar de contexto y trabajar en la corrección del error sin perder tu progreso en la funcionalidad en la que estabas trabajando. Aquí es donde Git Stash es útil.
Git stash es una poderosa característica que permite a los desarrolladores guardar temporalmente sus cambios sin confirmarlos en el repositorio. Efectivamente, "almacena" los cambios que has realizado, permitiéndote cambiar a un nuevo branch sin tener que confirmar una nueva característica que puede no estar lista para que otros la vean. Cuando estés listo, puedes aplicar estos cambios de nuevo a tu copia de trabajo o a otro branch.
Cuando ejecutas el comando git stash
, tus cambios se guardan en una pila. Esta pila puede contener múltiples stashes, y puedes aplicar cualquiera de los stashes listados más tarde. Un solo stash es una combinación de:
Una vez que los cambios están guardados, tu directorio de trabajo está limpio, y puedes cambiar de branch, compilar tu código o hacer cualquier otra cosa que necesites. Después de haber completado esa tarea, puedes volver a tu trabajo original aplicando o tomando el stash.
Para comenzar a usar stash en Git, necesitas estar familiarizado con algunos comandos básicos. Aquí tienes un vistazo a los comandos más importantes:
Para almacenar tus cambios, usa el siguiente comando:
git stash push
Esto guardará tus modificaciones locales y revertirá tu directorio de trabajo para que coincida con el commit HEAD. Es como si nunca hubieras hecho esos cambios.
A menudo es útil incluir un mensaje con tus cambios ocultos para una fácil identificación:
git stash push -m "tu mensaje de stash"
Este mensaje te ayuda a recordar qué cambios hay en este stash sin referirte a los cambios a nivel de línea.
Para ver una lista de todas tus colecciones guardadas:
git stash list
Este comando imprimirá una lista de todos los stashes que has guardado y sus mensajes asociados.
Para volver a aplicar el último stash:
git stash apply
Este comando aplica el último stash a tu directorio de trabajo actual, pero no lo elimina de la lista de stash.
Si deseas aplicar un stash específico, usa:
git stash apply stash@{n}
Reemplaza stash@{n}
con el stash específico que deseas aplicar, el cual puedes identificar a partir del resultado de git stash list
.
Para aplicar y eliminar inmediatamente el último stash:
git stash pop
Esto es similar al comando apply, pero también elimina el stash aplicado de tu lista.
Si deseas eliminar un stash en particular (sin aplicarlo), usa:
git stash drop stash@{n}
Esto destruirá el stash especificado.
Si deseas eliminar todos los stash, el comando es:
git stash clear
Usa este comando con precaución, ya que destruirá permanentemente todos los cambios almacenados.
Considera un escenario en el que estás desarrollando una nueva característica en el branch feature-xyz
, y has realizado varios cambios en tu copia de trabajo. De repente, necesitas arreglar un error grave en el branch principal.
git status
git stash push -m "Guardando trabajo en feature-xyz"
main
o cualquier otro branch en el que necesites trabajar:
git checkout main
git commit -a -m "Corrección de error crítico"
git checkout feature-xyz
git stash pop
Si hay algún desacuerdo, resuélvelo y luego continúa con tu trabajo.
Git Stash ofrece cierta flexibilidad con opciones más avanzadas:
Por defecto, git stash push
solo almacenará cambios en archivos rastreados. Para incluir archivos no rastreados:
git stash push -u
Esto archivará tanto los archivos rastreados como los no rastreados.
Si también deseas almacenar archivos ignorados (archivos excluidos explícitamente por .gitignore
):
git stash push --all
Puedes archivar selectivamente partes de archivos usando:
git stash -p
Este comando es interactivo y te permite seleccionar fragmentos específicos para almacenar.
Para volver a aplicar los cambios almacenados, incluidos los cambios en el índice (staged changes), usa:
git stash apply --index
Ten en cuenta que esto puede causar conflictos si hay cambios conflictivos en el índice.
Si bien el stashing y unstashing son generalmente sencillos, pueden surgir conflictos, especialmente cuando el stash se aplica a una base de código actualizada. Si ocurren conflictos, Git los marcará como conflictos de fusión. Debes editar los archivos afectados, resolver los conflictos manualmente y marcarlos como resueltos:
git add <archivo>
Una vez resueltos, puedes continuar trabajando y eventualmente presentar tus cambios.
Aquí hay algunos consejos para que trabajar con Git Stash sea más fácil y efectivo:
-m
para etiquetar tus stashes. Esto ayuda a identificarlos fácilmente más tarde.Git stash es una herramienta versátil en el arsenal del desarrollador, particularmente útil para preservar el trabajo no comprometido y cambiar temporalmente de referencias. Al comprender cómo usar Git stash efectivamente, los desarrolladores pueden manejar cambios sin problemas a través de diferentes tareas, mejorando la eficiencia y flexibilidad en su flujo de trabajo.
Desde guardar trabajo inconcluso hasta enfocarse en errores importantes, implementar correctamente las capacidades de git stash en tu flujo de trabajo puede hacer que gestionar cambios de código sea más fácil y manejable. A medida que te sientas cómodo con Git stash, descubrirás que se convierte en una parte indispensable de tu conjunto de herramientas de desarrollo.
Si encuentras algo incorrecto en el contenido del artículo, puedes