Restaurar archivos eliminados antes de confirmar en Git

Ankit Raj Goyal 15 febrero 2024
  1. Restaurar archivos eliminados antes de confirmar usando los comandos reset y checkout en Git
  2. Restaurar archivos eliminados antes de confirmar usando el comando git checkout en Git
  3. Restaurar un lote de archivos eliminados antes de confirmar en Git
Restaurar archivos eliminados antes de confirmar en Git

Usamos los comandos git checkout y git reset para restaurar archivos eliminados antes de confirmar. Git nos proporciona potentes opciones para realizar tareas complejas con estos comandos.

Primero podemos eliminar el archivo eliminado y luego restaurarlo en el árbol de trabajo en un paso separado. Alternativamente, podemos combinar las dos operaciones en un solo paso.

Este tutorial muestra un truco inteligente para recuperar por lotes varios archivos con un solo comando.

Restaurar archivos eliminados antes de confirmar usando los comandos reset y checkout en Git

Primero, configuremos un repositorio y agreguemos algunos archivos. Se parece a esto:

Repositorio inicial antes de las eliminaciones

Nuestro primer par de confirmaciones se ven así en el registro:

Confirmaciones iniciales de repositorio

Ahora borramos un archivo con el comando rm.

git rm file7.txt

El archivo eliminado file7.txt ya no está presente en nuestro repositorio.

Borrar archivo

El comportamiento predeterminado de rm es organizar los cambios de eliminación automáticamente.

rm Eliminación de etapas automáticas

Ahora procedemos a restaurar el archivo eliminado antes de confirmar.

Primero, deshacemos la eliminación con el comando reset.

git reset <commit_hash> [--] <path_to_file>

Este comando restaura el índice al estado de commit_hash para todos los archivos que coinciden con el parámetro path_to_file.

git reset HEAD --file7.txt

Esto restaura el índice a HEAD para file7.txt. HEAD apunta a nuestro último compromiso.

Recuerde, no hemos confirmado la eliminación, por lo que nuestra última confirmación no tiene la entrada de eliminación.

En esencia, usamos este comando para eliminar archivos borrados.

Git Restablecer Unstage Cambiar

Archivo eliminado de Unstage

A continuación, restauramos el archivo borrado en el área de trabajo con el comando git checkout.

git checkout [--] <path_to_file>

checkout sobrescribe el contenido en el árbol de trabajo con el índice en este formulario.

git checkout -- file7.txt

Git Restaurar Archivo Eliminado 2 Pasos

Restaurar archivos eliminados antes de confirmar usando el comando git checkout en Git

El comando git checkout nos proporciona un formulario donde podemos combinar los dos pasos anteriores en uno solo.

git checkout <commit> [--] <path_to_file>

De esta forma, git checkout sobrescribe el contenido tanto en el índice como en las áreas de trabajo con confirmación.

git checkout HEAD -- file7.txt

HEAD apunta a nuestro último compromiso. No confirmamos la eliminación, por lo que nuestra última confirmación no conoce la operación de eliminación.

Git Undelete Checkout de un solo paso

Restaurar un lote de archivos eliminados antes de confirmar en Git

¿Qué sucede si eliminamos un montón de archivos y no nos comprometemos? Supongamos que eliminamos 1000 archivos y ahora queremos restaurarlos todos.

Eliminar varios archivos

Escribir los comandos anteriores 1000 veces no es la manera de hacer cosas de un programador. En cambio, podemos usar comodines en los especificadores de ruta para hacer coincidir muchos archivos y recuperarlos con un solo comando.

git reset HEAD .

Este es el mismo comando que el anterior, excepto que reemplazamos file7.txt con . comodín. El . le dice a git que coincida con todos los archivos.

Por lo tanto, este comando elimina todos nuestros archivos eliminados. Luego los restauramos en el área de trabajo.

git checkout .

El mismo comando con file7.txt se reemplaza nuevamente con . comodín. Restaura todas las eliminaciones no preparadas de una sola vez.

Eliminaciones de restauración por lotes

Todos los archivos eliminados restaurados

Artículo relacionado - Git Restore