¿Qué es `git stash` y cuándo lo usarías?
Ver respuesta — intenta responderla en voz alta primero
git stash guarda temporalmente tus cambios sin commitear (los del working directory y staging) y deja tu directorio limpio, como en el último commit. Lo usas cuando necesitas cambiar de contexto de golpe (por ejemplo, arreglar un bug urgente en otra rama) pero tu trabajo actual aún no está listo para un commit.
Estás a medias de una feature, con cambios sin terminar, y de repente hay que arreglar algo urgente en otra rama. No quieres commitear código incompleto, pero Git no te deja cambiar de rama con cambios en conflicto. Solución: git stash.
git stash toma tus cambios pendientes, los guarda en una pila (stack) aparte y limpia tu working directory. Luego puedes cambiar de rama, hacer lo urgente, volver y recuperar tus cambios con git stash pop.
git stash: guarda y limpia.git stash list: ve qué tienes guardado.git stash pop: recupera el último stash y lo borra de la pila.git stash apply: recupera pero lo conserva en la pila.
# Tienes cambios a medias y necesitas cambiar de rama urgente
git stash
# Salida: Saved working directory and index state WIP on feature: ...
# Tu working directory queda limpio
# Cambias de rama, haces lo urgente, vuelves
git switch main
# ...arreglo urgente, commit, push...
git switch feature
# Recuperas tus cambios guardados
git stash pop
# Vuelven tus cambios y el stash se elimina de la pila
# Ver la lista de stashes guardados
git stash list
# stash@{0}: WIP on feature: 1a2b3c4 ...
# Guardar con un mensaje descriptivo
git stash push -m "formulario a medias"
# Incluir tambien archivos untracked (nuevos)
git stash -u
Olvidar que un git stash normal no incluye archivos untracked (nuevos, sin git add previo); para incluirlos hay que usar git stash -u. Otro error es acumular muchos stashes sin nombre y luego no saber cuál es cuál (por eso conviene usar -m con un mensaje). También, confundir pop (recupera y borra) con apply (recupera y conserva).
"
git stashguarda temporalmente mis cambios sin commitear y deja el working directory limpio. Lo uso cuando estoy a medias de algo y me cae un bug urgente en otra rama: no quiero commitear código incompleto, así que hago stash, cambio de rama, resuelvo lo urgente, vuelvo y hagogit stash poppara recuperar mi trabajo. Usopoppara recuperar y borrar, oapplypara conservarlo, y-usi quiero incluir archivos nuevos."
Hiciste git stash, pero tienes un archivo nuevo notas.txt que nunca añadiste a Git. Al hacer stash notas que notas.txt sigue ahí. ¿Por qué?
Ver respuesta
Porque git stash por defecto no incluye archivos untracked (nuevos, sin seguimiento). Solo guarda cambios de archivos ya rastreados. Para que notas.txt también se guarde en el stash, tendrías que usar git stash -u (o --include-untracked).