Cómo aplicar un stash específico de Git

GitBeginner
Practicar Ahora

Introducción

Git stash es una función poderosa que permite a los desarrolladores guardar temporalmente sus cambios locales sin confirmarlos (commit). En este tutorial, lo guiaremos a través del proceso de aplicar un stash específico de Git, ayudándole a gestionar de manera eficiente su flujo de trabajo de desarrollo y mantener una base de código limpia.

Comprender los conceptos básicos de Git Stash

Git Stash es una función poderosa en Git que te permite guardar temporalmente tus cambios locales sin confirmarlos (commit). Esto es especialmente útil cuando necesitas cambiar a una rama (branch) diferente o extraer (pull) los últimos cambios de un repositorio remoto, pero no quieres perder el trabajo que has realizado en tu rama actual.

¿Qué es Git Stash?

Git Stash es una forma de guardar temporalmente tus cambios locales, incluyendo tanto los cambios preparados (staged) como los no preparados (unstaged), en un "stash" que luego puedes aplicar o descartar. Esto te permite cambiar a una rama diferente, extraer los últimos cambios o realizar otras operaciones de Git sin perder tu trabajo actual.

¿Cuándo usar Git Stash?

Puedes usar Git Stash en los siguientes escenarios:

  • Estás trabajando en una función (feature) y necesitas cambiar a una rama diferente para corregir un error (bug) o fusionar (merge) una solicitud de extracción (pull request).
  • Quieres extraer los últimos cambios de un repositorio remoto, pero aún no quieres confirmar tus cambios locales.
  • Has realizado algunos cambios experimentales que quieres guardar para más tarde, pero no quieres confirmarlos en la rama principal.

¿Cómo usar Git Stash?

Para usar Git Stash, puedes seguir estos pasos:

  1. Asegúrate de que tu directorio de trabajo esté limpio (sin archivos no rastreados o modificados).
  2. Ejecuta el comando git stash para guardar tus cambios actuales en el stash.
  3. Cambia a la rama deseada o realiza otras operaciones de Git.
  4. Cuando estés listo para aplicar los cambios guardados en el stash, ejecuta git stash apply para aplicar el stash más reciente, o git stash apply stash@{n} para aplicar un stash específico, donde n es el índice del stash que deseas aplicar.
## Save current changes to the stash
git stash

## Switch to a different branch
git checkout feature/new-functionality

## Apply the most recent stash
git stash apply

## Apply a specific stash
git stash apply stash@{2}

Visualizar Git Stash

Puedes visualizar el proceso de Git Stash utilizando un diagrama Mermaid:

graph TD A[Working Directory] --> B[Stash] B --> C[Working Directory] B --> D[Branch]

Este diagrama muestra cómo la función Git Stash te permite guardar temporalmente tus cambios locales en el Stash, cambiar a una rama diferente y luego aplicar los cambios guardados en el stash de nuevo a tu directorio de trabajo.

Aplicar un stash específico de Git

Si bien el comando git stash apply es útil para aplicar el stash más reciente, puede haber ocasiones en las que necesites aplicar un stash específico de tu lista de stashes. Esto puede ser especialmente útil cuando tienes múltiples stashes y necesitas aplicarlos de forma selectiva.

Listar los stashes disponibles

Para ver la lista de stashes disponibles, puedes usar el comando git stash list:

git stash list

Esto mostrará una lista de todos los stashes que has guardado, junto con su índice y una descripción de los cambios que contienen.

Aplicar un stash específico

Para aplicar un stash específico, puedes usar el comando git stash apply seguido de la referencia del stash. La referencia del stash tiene el formato stash@{n}, donde n es el índice del stash que deseas aplicar.

## Apply the stash at index 2
git stash apply stash@{2}

Si deseas aplicar un stash y luego eliminarlo de la lista de stashes, puedes usar el comando git stash pop en su lugar:

## Apply and remove the stash at index 2
git stash pop stash@{2}

Visualizar la aplicación de un stash

Puedes visualizar el proceso de aplicar un stash específico utilizando un diagrama Mermaid:

graph TD A[Stash List] --> B[Stash@{2}] B --> C[Working Directory]

Este diagrama muestra cómo puedes seleccionar un stash específico de la lista de stashes (en este caso, Stash@{2}) y aplicarlo a tu directorio de trabajo.

Técnicas de gestión de stashes

Además de aplicar stashes específicos, también puedes usar los siguientes comandos para gestionar tu lista de stashes:

  • git stash clear: Elimina todos los stashes de la lista de stashes.
  • git stash drop stash@{n}: Elimina un stash específico de la lista de stashes.
  • git stash show stash@{n}: Muestra los cambios contenidos en un stash específico.

Al dominar estas técnicas, puedes gestionar eficazmente tus stashes de Git y aplicarlos según sea necesario para optimizar tu flujo de trabajo de desarrollo.

Técnicas avanzadas de Git Stash

Si bien los comandos básicos de Git Stash son poderosos, también existen algunas técnicas avanzadas que pueden ayudarte a gestionar y utilizar mejor tus stashes. Estas técnicas pueden ser especialmente útiles para flujos de trabajo de desarrollo más complejos.

Guardar un stash con un mensaje

Cuando creas un stash, puedes agregar un mensaje a él para ayudarte a recordar qué cambios se incluyen. Esto puede ser especialmente útil cuando tienes múltiples stashes y necesitas identificar rápidamente el propósito de cada uno.

## Stash changes with a message
git stash save "Implement new feature"

Guardar archivos no rastreados en un stash

Por defecto, el comando git stash solo guarda los archivos rastreados (archivos que ya están bajo el control de versiones de Git). Si quieres incluir archivos no rastreados en tu stash, puedes usar la opción -u o --include-untracked:

## Stash changes including untracked files
git stash -u

Guardar en un stash archivos o directorios específicos

Si solo quieres guardar en un stash archivos o directorios específicos, puedes proporcionarlos como argumentos al comando git stash:

## Stash changes in a specific directory
git stash save "Stash changes in src directory" src/

Aplicar stashes a una rama diferente

A veces, es posible que desees aplicar un stash a una rama diferente de la en la que te encontraba cuando creaste el stash. Puedes hacer esto utilizando el comando git stash branch:

## Apply a stash to a different branch
git stash branch feature/new-functionality

Este comando creará una nueva rama, la cambiará (check out) y luego aplicará el stash más reciente a la nueva rama.

Visualizar las técnicas avanzadas de stash

Puedes usar diagramas Mermaid para visualizar algunas de las técnicas avanzadas de Git Stash:

graph TD A[Working Directory] --> B[Stash] B --> C[Branch A] B --> D[Branch B]

Este diagrama muestra cómo puedes aplicar stashes a diferentes ramas, lo que te permite cambiar fácilmente entre tu trabajo en diferentes funciones o correcciones de errores.

Al dominar estas técnicas avanzadas de Git Stash, puedes optimizar tu flujo de trabajo de desarrollo y gestionar mejor tu base de código, incluso en escenarios complejos.

Resumen

Al final de este tutorial, tendrás una comprensión integral de cómo aplicar un stash específico de Git, así como explorar técnicas avanzadas para gestionar tus cambios guardados en stashes. Dominar estas habilidades te permitirá optimizar tu proceso de desarrollo basado en Git y mantener una base de código más organizada y eficiente.