Tema 20: Guardar temporalmente el trabajo
Un stash guarda temporalmente cambios del trabajo y del índice para que puedas atender otra tarea sin convertir el borrador en un commit de la rama. No sustituye un historial bien descrito ni una copia de seguridad externa. Empieza con status para entender qué vas a apartar.
git stash push -m "Pausa" guarda las modificaciones de archivos seguidos y devuelve esas áreas a la versión confirmada. Por defecto deja fuera los archivos nuevos sin seguimiento. git stash push -u -m "Pausa" los incluye. Los archivos ignorados —excluidos del seguimiento mediante reglas de Git— son otra categoría y no se incluyen con -u.
git stash list enumera las entradas, y la más reciente se llama stash@{0}. git stash show permite inspeccionar el cambio; en Git real resume por defecto y puede mostrar el parche con opciones adicionales. El laboratorio presenta directamente el texto modificado para facilitar la inspección.
git stash apply recupera la entrada sin borrarla. git stash pop intenta recuperarla y la elimina si se aplica correctamente. Ninguna de las dos formas simples promete devolver la selección original del índice: en la práctica los cambios quedan sin preparar. Git real dispone de --index para intentar restaurarla, opción que este laboratorio no implementa.
git stash drop elimina una entrada sin aplicarla. Puedes indicar otra entrada como stash@{1}; recuerda que al eliminar una, cambian los números de las siguientes. En este tema recuperamos en un contexto compatible. Los conflictos se explican a continuación.
Después de recuperar, revisa diff, prepara y confirma cuando tenga sentido. Los comandos anteriores siguen siendo los que convierten el trabajo temporal en una versión normal del proyecto.
Comandos para probar #
1git status 2git stash push -m "Pausa" 3git stash list 4git stash show 5git stash pop 6git diff
Error que conviene evitar #
Pensar que un archivo sin seguimiento se guarda siempre o eliminar una entrada sin comprobar su contenido.
Laboratorio local #
Prueba los comandos y observa qué cambia. Puedes reiniciar sin guardar una entrega. Los retos evaluables y el cuestionario están en las actividades de este tema.
Git / práctica local
Pausa y continúa
Aplicar edición cambia el archivo; git add lo prepara.
Historial de commits
Las líneas conectan los commits con sus padres. Los commits que ya no tienen una referencia también permanecen visibles en este laboratorio.
- 0000001: Commit inicial; HEAD → main
Comparar trabajo, índice y HEAD
Trabajo
Trabajo temporal
Índice (staging)
# Mi proyecto
HEAD
# Mi proyecto
TERMINAL
Sesión local preparada. Escribe help para consultar los comandos de este tema.
Comandos disponibles y límites
git --version · git config --global <clave> [valor] git init · git status git add <archivo | .> · git commit -m "mensaje" · git log git log --oneline · git switch <rama> (antes: checkout) git restore [--staged] <archivo> · git commit --amend [-m "mensaje" | --no-edit] git switch --detach <commit> · HEAD · HEAD~1 git diff [--staged | <commit> <commit>] git remote [-v] · git remote add <nombre> <URL> · git remote get-url <nombre> · git remote set-url <nombre> <URL> git clone <URL> git push [-u] <remoto> <rama> ssh-keygen -t ed25519 · ssh -T git@github.com (ficticios) git branch [nombre] · git branch -m <nombre> · git branch -d <rama> · git switch -c <rama> git merge [--ff-only] <rama> git merge --no-ff <rama> · git log --graph --all --decorate git merge --abort · editar conflicto, git add y git commit -m "mensaje" git config --global alias.st status · git st git tag [nombre] · git tag -a <nombre> -m "mensaje" · git tag -n · git push origin <tag> git reset --soft|--mixed|--hard <commit> · git reflog git stash push [-u] [-m "mensaje"] · list · show · apply · pop · drop help · clear
Sesión en memoria: recargar descarta la práctica. Doscientas acciones como máximo. Dos archivos editables de hasta 250 líneas. Diez ramas como máximo. Diez entradas de stash como máximo. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo.
Resumen
- Aparta cambios sin crear un commit normal en la rama.
- No incluye por ello los archivos ignorados.
- Puedes volver a consultar o utilizar la misma entrada.
- Pensar que un archivo sin seguimiento se guarda siempre o eliminar una entrada sin comprobar su contenido.