Restaurar archivos eliminados antes de confirmar en Git
-
Restaurar archivos eliminados antes de confirmar usando los comandos
reset
ycheckout
en Git -
Restaurar archivos eliminados antes de confirmar usando el comando
git checkout
en Git - Restaurar un lote de 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:
Nuestro primer par de confirmaciones se ven así en el registro:
Ahora borramos un archivo con el comando rm
.
git rm file7.txt
El archivo eliminado file7.txt
ya no está presente en nuestro repositorio.
El comportamiento predeterminado de rm
es organizar los cambios de eliminación automáticamente.
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.
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
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.
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.
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.