Recuperación de datos específicos mediante comandos de Git

Completado

La posibilidad de recuperar datos mediante comandos Git es crucial para que los desarrolladores puedan revertir cambios accidentales, restaurar archivos borrados o recuperar confirmaciones perdidas. Contribuye a minimizar los tiempos de inactividad imprevistos y a garantizar la continuidad del proyecto. Sin embargo, aunque sus beneficios son evidentes, es importante señalar sus riesgos potenciales. Cuando se aplica el comando Git descrito en esta unidad, es esencial tener la precaución adecuada, especialmente cuando se manipula el historial de confirmaciones o se revierten cambios, ya que los errores pueden conducir a la pérdida de datos.

Comandos de recuperación de datos de Git

Los comandos de Git que se ocupan de la recuperación de datos pueden agruparse en varias categorías, incluyendo la recuperación de confirmaciones, archivos, líneas específicas de código y confirmaciones o ramas eliminadas.

Recuperación de confirmaciones

  • Registro de Git: muestra el historial de confirmaciones de un repositorio. Puede navegar por el registro para encontrar la confirmación que desea recuperar.
  • Confirmación de la < comprobación Git>: cambia a una confirmación específica, "recuperando" efectivamente el estado del repositorio en esa confirmación.
  • Confirmación de selección <exclusiva de Git>: aplica los cambios introducidos por una confirmación específica en su rama actual.

Recuperación de archivos

  • Archivo de confirmación <para la comprobación><Git>: restaura un archivo específico de una confirmación anterior.
  • Restauración de archivo <Git>: descarta los cambios locales y restaura el archivo a su último estado confirmado, asumiendo que aún no ha confirmado los cambios.

Recuperación de líneas de código específicas

  • Archivo <Git blame>: muestra la revisión y el autor de cada línea de un archivo, ayudándole a identificar la confirmación que introdujo un cambio en particular.
  • Mostrar <confirmación Git>:<archivo>: muestra el contenido de un archivo en una confirmación específica. Puede especificar la confirmación y la ruta del archivo para ver el contenido tal y como existía en ese momento.

Recuperación de confirmaciones o ramas borradas

  • git reflog: muestra un registro de todos las confirmaciones. Puede usarlo para encontrar el hash SHA-1 de una confirmación o rama previamente eliminada y luego obtenerla o restaurarla.
  • git fsck --lost-found: comprueba la integridad del repositorio y enumera las confirmaciones que no son accesibles desde ninguna rama o etiqueta. Puede utilizarlo para recuperar confirmaciones perdidas.

Recuerda usar estos comandos con precaución, especialmente al manipular el historial de confirmaciones o revertir cambios. Asegúrate siempre de crear una copia de seguridad de tu repositorio antes de empezar o usa git stash para guardar tus cambios actuales antes de intentar cualquier operación de recuperación.

Escenario de ejemplo

Veamos un ejemplo que ilustra el proceso de uso de comandos Git para recuperar un archivo eliminado. Supongamos que un archivo llamado ejemplo.txt que reside en su repositorio Git ha sido borrado accidentalmente y necesita recuperarlo.

Ver el historial de confirmaciones:

  • Empiece mostrando el historial de confirmaciones:
    git log
  • En el listado del historial de confirmaciones identifique el hash SHA-1 de la confirmación en la que el archivo ejemplo.txt estuvo presente por última vez.

Restaurar el archivo eliminado:

  • Una vez que haya identificado el hash SHA-1 de la confirmación, utilice la confirmación Git para restaurar el archivo:
    git checkout <commit_SHA>^ -- example.txt
  • Reemplace <commit_SHA> por el hash SHA-1 de la confirmación. El símbolo ^ indica el origen de esa confirmación, lo que restaura el archivo a su estado anterior a la eliminación.

Comprobación de cambios:

  • Tras restaurar el archivo, compruebe que se ha restaurado correctamente comprobando el estado del repositorio:
    git status
  • Validar que example.txt aparece como archivo modificado o no rastreado.

Preparación y confirmación de cambios:

  • Si el archivo aparece como modificado, escenifíquelo para confirmarlo:
    git add example.txt
  • Confirme los cambios con un mensaje de confirmación adecuado:
    git commit -m "Restored example.txt"