Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git restore [--staged] [--source=<tree>] [-p] <pathspec>...

Descripción

El comando git restore, introducido en Git 2.23, reemplaza la mitad de restauración de archivos de git checkout. Restaura archivos en el árbol de trabajo (predeterminado) o el index desde una fuente como HEAD, otro commit, o el index. A diferencia de checkout, no cambia branches.

Las invocaciones más comunes son git restore <file> para descartar cambios no staged en un archivo, y git restore --staged <file> para quitar staging. Estas son operaciones diarias que solían requerir comandos más complicados.

En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.

Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.

Opciones comunes

OpciónDescripción
--stagedRestore the index instead of the working tree (i.e., unstage).
--worktreeRestore the working tree (default).
--source=<tree> / -sRestore from a specific commit, branch, or tag.
-p, --patchInteractively pick hunks to restore.
--ours / --theirsDuring a conflict, restore one side.
-q, --quietSuppress progress.

Ejemplos

git restore src/main.c
# Discard unstaged changes in main.c

git restore --staged config.yml
# Unstage a file (keep working-tree changes)

git restore --source=HEAD~3 README.md
# Bring back README.md as it was 3 commits ago

git restore -p
# Interactively pick hunks to discard

Errores comunes

git restore on a file with unsaved changes silently overwrites them — there is no confirmation prompt and no easy undo. Stash first if uncertain. Beginners sometimes confuse --staged with git reset --hard; --staged only touches the index, leaving working-tree edits intact.

Comandos relacionados

git reset, git checkout, git stash, git revert