git restore
git restore: restaura el directorio de trabajo, el área de preparación o ambos.
git restore devuelve archivos a un estado conocido. Por defecto, reemplaza los archivos del directorio de trabajo con lo que hay en el área de preparación. Si no hay nada preparado, el resultado coincide con tu último commit.
Con la opción --staged, restablece el área de preparación para que coincida con el último commit (o con el commit indicado en --source) y deja tu directorio de trabajo tal cual. Así quitas cambios del área de preparación y vuelves al estado del commit sin perder tus ediciones.
Añadido en Git 2.23.0, git restore es la forma específica de deshacer cambios locales o quitar archivos del área de preparación. Si tienes la costumbre de hacerlo todo con git reset, puedes seguir con ella, pero git restore es más difícil de usar mal y solo toca el directorio de trabajo y el área de preparación, no el historial de commits.
Casos de uso
-
Restaurar el directorio de trabajo (sin nada preparado): Has hecho cambios que no quieres. Devuelve el directorio de trabajo al último commit.
Solución:
git restore --worktree .o simplementegit restore ., porque el modo--worktreees el predeterminado. -
Restaurar el área de preparación y conservar el directorio de trabajo: Has preparado demasiados cambios. Devuelve el área de preparación al último commit y conserva tus ediciones en el directorio de trabajo.
Solución:
git restore --staged . -
Restaurar el directorio de trabajo y conservar el área de preparación: Has preparado lo correcto y después has añadido más cambios que no te gustan. Devuelve el directorio de trabajo a lo que está preparado.
Solución:
git restore --worktree .ogit restore . -
Restaurar el área de preparación y el directorio de trabajo: Quieres tirarlo todo, tanto lo preparado como lo que está sin preparar. Devuelve ambos al último commit.
Solución:
git restore --worktree --staged .
Ejemplos
Descartar cambios en un archivo concreto:
git restore README.mdDescartar cambios en todos los archivos del directorio actual (la ruta . significa "aquí"):
git restore .Quitar un archivo del área de preparación, pero conservar sus ediciones en el directorio de trabajo:
git restore --staged README.mdQuitarlo todo del área de preparación y restablecer el directorio de trabajo al último commit:
git restore --worktree --staged .Restaurar un archivo desde un commit concreto.
git restore --source a1b2c3d4 README.mdElegir de forma interactiva qué cambios conservar o descartar:
git restore --patchO la forma corta:
git restore -p.gitignoregit checkoutgit configgit taggit worktree