¿Has perdido archivos en Git? Recupera los archivos eliminados y sin confirmar

Recuperar archivos perdidos de Git que se han eliminado o no se han confirmado

Un cambio de rama hace que tu carpeta de origen parezca vacía. Un reinicio completo borra las modificaciones de esta mañana. O un comando de limpieza elimina un script que nunca has confirmado. Estos Archivos perdidos en Git Las situaciones parecen similares, pero el método de recuperación adecuado depende de si Git llegó a almacenar en algún momento el contenido que falta.

Que no aparezca en tu carpeta de trabajo no significa necesariamente que haya desaparecido del repositorio. Es posible que aún haya una copia utilizable en una confirmación, en el área de preparación, en otra rama o en un stash. Empieza por buscar en esas ubicaciones antes de escanear el disco.

Esta guía sigue ese orden. Si Git no tiene ninguna copia y el archivo original ha desaparecido del almacenamiento, el guía de recuperación de archivos eliminados trata la siguiente rama. Para ese caso concreto de Windows, Magic Data Recovery ofrece una opción de recuperación a nivel de almacenamiento; no reconstruye el historial de Git.

Índice

Archivos perdidos en Git: elige el método de recuperación adecuado

La respuesta más rápida: Restaurar un archivo controlado desde el índice o desde una confirmación conocida. Comprueba el reflog en busca de confirmaciones perdidas y el historial local en busca de modificaciones que Git nunca haya guardado. Utiliza la recuperación del disco solo cuando no quede ninguna copia utilizable.

¿Qué ha pasado?

En caso de que exista una copia

Empieza por aquí

Has eliminado un archivo con control de versiones sin pasar la eliminación por la fase de preparación.

El índice de Git

Restaurar la ruta individual

Has simulado la eliminación o has utilizado git rm

La última actualización

Restaurar esa ruta desde TÍTULO

Tú has realizado la eliminación

Una confirmación anterior

Busca una revisión que contenga el archivo

Un «reset», un «rebase» o una modificación ocultaron una confirmación

Registro de referencia local

Crea una rama de recuperación en la confirmación anterior

Has preparado el contenido, pero nunca lo has publicado.

Índice u objetos «blob» que se han conservado

Consulta el índice y, a continuación, revisa los objetos

Nunca has añadido, confirmado ni guardado temporalmente el contenido

Historial de ediciones, copias de seguridad, disco original

Comprueba las copias antes de la recuperación del disco

Los archivos desaparecieron tras cambiar de rama

Otra rama o configuración de checkout

Confirma primero la ubicación y la sucursal

Esta distinción es importante para Recuperar archivos sin confirmar en Git búsquedas: “sin confirmar” incluye tanto el contenido preparado como los cambios que Git nunca ha almacenado. Estos dos casos tienen límites de recuperación diferentes.

Protege el repositorio antes de ejecutar comandos

Detén la compilación, la instalación de dependencias y la limpieza automática. Si la unidad funciona con normalidad, copia el repositorio a otra unidad física, incluidos los metadatos ocultos de Git. Una clonación normal no conserva todas las pistas de recuperación locales, como el índice, el reflog y los objetos inaccesibles.

En el caso de los árboles de trabajo vinculados o los submódulos, .git Puede tratarse de un archivo de puntero en lugar de un directorio. Conserva también el directorio de Git al que hace referencia. Si sospechas que se trata de un fallo físico del disco, interrumpe las operaciones habituales de copia y análisis y busca ayuda profesional para la recuperación.

Protege el repositorio antes de ejecutar comandos

Evita estos comandos durante la recuperación:

  • git reset --hard, que descarta los cambios de trabajo controlados y puede eliminar las rutas no controladas que supongan un obstáculo.
  • git clean -fd o git clean -fdx, que elimina el contenido no registrado; -x también incluye los archivos ignorados.
  • git gc --prune=now y git prune, lo que puede eliminar objetos que aún necesitas.

Git’s restablecer la documentación y documentación clara explicar estos efectos. Por lo general, no es necesario realizar una reversión de todo el repositorio cuando solo falta un archivo.

Utiliza los ejemplos que aparecen a continuación desde la raíz del repositorio. Sustituye los nombres de archivo y los hash de ejemplo por los tuyos propios. Los comandos de restauración requieren Git 2.23 o una versión posterior y funcionan en Git Bash en Windows, así como en terminales de macOS y Linux.

Comprueba si el archivo ha desaparecido o simplemente está en otro lugar

Antes de intentar Recuperación de archivos de Git, confirma qué repositorio y qué rama has abierto:

  1. git rev-parse –show-toplevel
  2. git status --short
  3. git branch --show-current
  4. git branch --all

A continuación, busca en el Explorador o en el Finder utilizando el nombre exacto del archivo, la extensión y la hora aproximada de modificación. Comprueba otra copia de trabajo, una carpeta de proyecto renombrada, un dispositivo de almacenamiento externo y las carpetas excluidas de tu editor.

Hay tres conceptos de Git que lo explican casi todo Archivos perdidos en Git casos:

  • Árbol de trabajo: los archivos que estás editando ahora mismo.
  • Índice: el contenido que has seleccionado con git add para la próxima confirmación.
  • Confirmar: una instantánea del proyecto guardada en el historial de Git.

Git no guarda automáticamente todos los cambios. La fase de preparación captura el contenido en ese momento, por lo que los cambios posteriores pueden encontrarse únicamente en tu árbol de trabajo. Consulta la documentación de Git sobre Guía para registrar los cambios.

Recuperar archivos eliminados en Git antes de realizar un commit

Lo mejor para: un archivo controlado que has eliminado localmente, aunque el repositorio aún contenga su contenido.

En primer lugar, comprueba la ruta:

  1. git status --short -- src/app.js
  2. git diff -- src/app.js
  3. git diff --cached -- src/app.js

En resumen, la primera columna describe los cambios en el índice; la segunda, los cambios en el árbol de trabajo. D significa una supresión sin etapas. D significa una supresión por etapas.

Recuperar una eliminación no confirmada del índice

A Recuperar archivos eliminados en Git cuando el índice todavía contiene el archivo:

  1. git restore -- src/app.js

Esto restaura la versión preparada, que puede diferir de la última confirmación. Por ejemplo, si has preparado una función actualizada antes de borrar el archivo, Git puede recuperar ese contenido preparado. Sin embargo, este comando no permite recuperar modificaciones posteriores que no se hayan preparado.

Recuperar una eliminación en fase de preparación desde HEAD

Si has simulado la eliminación, el índice ya no contiene el archivo en esa ruta. Tras guardar cualquier copia útil, restaura su última versión confirmada:

  1. git restore --source=HEAD --staged --worktree -- src/app.js

Esto modifica tanto el índice como el archivo de trabajo de esa ruta. No recupera una versión más reciente que aún no se haya confirmado. Git’s recuperar la documentación explica las opciones de origen y destino.

En el caso de un archivo recién añadido a un repositorio que no tiene ninguna confirmación, TÍTULO aún no existe. Si el índice sigue conteniendo el archivo, utiliza en su lugar el método basado en el índice.

Restaurar un archivo a partir de una confirmación anterior o de otra rama

Lo mejor para: una eliminación confirmada, una versión anterior del archivo o un archivo que solo falta en tu rama actual.

Empecemos por su historia:

  1. git log --all --oneline -- src/app.js

Si no recuerdas su ruta anterior, muestra los registros de eliminación:

  1. git log --all --diff-filter=D --summary

Revisa una confirmación candidata antes de restaurar nada:

  1. git show abc1234:src/app.js

Sustituir abc1234 con una confirmación que realmente contenga el archivo. A continuación, restaura solo esa ruta:

  1. git restore --source=abc1234 -- src/app.js

Si abc1234 Es la confirmación de la eliminación; comprueba su confirmación principal con git show abc1234^:src/app.js. En el caso de una simple eliminación, es posible que la versión deseada se encuentre en la versión de origen. Las confirmaciones de fusión tienen varias versiones de origen, por lo que conviene verificar el contenido en lugar de dar por sentado que la primera versión de origen es la correcta.

Para Faltan archivos en Git tras cambiar de rama, revisa la rama que contiene el archivo:

  1. git show feature/login:src/app.js
  2. git restore --source=feature/login -- src/app.js

Estos ejemplos conservan tu rama actual y el resto de archivos. Consulta el Documentación sobre el historial de Git para las búsquedas en el historial y el Mostrar la documentación de Git para revisar el contenido almacenado. Es posible que las búsquedas en el historial requieran el nombre de archivo anterior si alguien ha cambiado el nombre del archivo.

Utiliza Reflog para recuperar los cambios perdidos en Git tras un «reset»

Lo mejor para: trabajo confirmado que desapareció de la historia visible tras un «reset», un «rebase», una «amend» o un cambio de rama.

Para Recuperación tras un «git reset hard», consulta tu historial de referencias locales:

  1. git reflog –date=local

Busca la confirmación anterior a la operación no deseada. Comprueba su contenido y, a continuación, guárdala en una nueva rama con el siguiente nombre:

  1. git show –stat abc1234
  2. git branch recovery-lost-work abc1234

La creación de la rama no cambia tu árbol de trabajo. Posteriormente, podrás consultar o restaurar archivos concretos desde ella.

Reflog no registra todas las modificaciones realizadas en los archivos. Registra los movimientos de las referencias. Si el contenido perdido nunca se incluyó en una confirmación, el reflog por sí solo no puede recuperarlo. Las entradas y los objetos también tienen un periodo de retención limitado. Git explica el mecanismo en su Documentación de reflog.

Para Archivos perdidos en Git tras eliminar una rama, la Guía oficial de recuperación de datos de Git describe cómo recuperar las confirmaciones que se han conservado. Conserva sin demora una confirmación útil en cuanto la identifiques.

Comprobar el contenido almacenado y el contenido preparado pero sin confirmar

Recuperar archivos de un alijo

Antes de asumir Cambios perdidos en Git Si los guardas de forma permanente, comprueba si los has apartado:

  1. git stash list
  2. git stash show –include-untracked –name-only ‘stash@{0}’
  3. git stash show -p –include-untracked ‘stash@{0}’

Elige el stash en función de su contenido, no solo de su fecha. En una copia protegida con un árbol de trabajo limpio, aplica la entrada correcta:

  1. git stash apply ‘stash@{0}’

A diferencia de pop, aplicar mantiene la entrada en la lista de almacenamiento. Esto puede provocar conflictos, así que revisa el resultado antes de continuar.

Un repositorio predeterminado no incluye archivos no controlados. Estos requieren -u al crear el stash; los archivos ignorados requieren -a. Consulta el Documentación sobre «stash» de Git.

Recuperar contenido preparado a partir de los objetos que se han conservado

Para Recuperar archivos sin confirmar en Git casos en los que ya hayas ejecutado git add, comprueba si el índice sigue conteniendo el contenido:

  1. git ls-files –stage — src/app.js
  2. git show :src/app.js

El segundo comando muestra la versión indexada. El Documentación de «ls-files» de Git explica cómo revisar las entradas del índice.

Si el índice se ha sustituido tras un restablecimiento, es posible que aún quede un blob que contenga el contenido en fase de preparación. Trabaja en tu copia conservada del repositorio:

  1. git fsck –full –no-reflogs –unreachable

Para un mancha inaccesible candidato, comprueba su contenido:

  1. git cat-file -p BLOB_HASH

Sustituir BLOB_HASH con un identificador de objeto real. Busca una función, un comentario o un valor de configuración característico. Los blobs contienen contenido, no el nombre de archivo original, por lo que la identificación puede llevar tiempo.

En el caso de los objetos que cuelgan, git fsck --lost-found escribe material de recuperación en .git/lost-found/. No garantiza que se exporten todos los objetos inaccesibles ni que se recree un árbol de directorios completo. Véase Git fsck y Git cat-file.

Exporta un blob confirmado a un nuevo archivo en otra unidad utilizando la redirección de salida de Git Bash o un método de exportación que conserve los bytes. Evita copiar contenido binario desde la salida de la terminal. Esta forma de proceder ayuda a Recuperación de archivos en la zona de preparación de Git, pero solo mientras los objetos en cuestión permanezcan intactos.

Recuperar archivos no registrados mediante el historial del editor y las copias de seguridad

Lo mejor para: archivos eliminados o modificaciones más recientes que Git nunca ha añadido, confirmado ni guardado temporalmente.

A Recuperar archivos no registrados, comprueba tu editor antes de escanear el almacenamiento. En VS Code, abre la paleta de comandos y ejecuta:

  1. Historia local: Buscar una entrada para restaurarla

Selecciona el archivo que falta, revisa las entradas disponibles y compara su contenido. En el caso de un archivo existente, la vista «Línea de tiempo» también puede mostrar el historial local. La disponibilidad depende de las entradas guardadas, la configuración y el periodo de retención; no se garantiza que se guarden los datos introducidos que no se hayan guardado. Microsoft lo documenta en el Guía de la interfaz de usuario de VS Code.

A continuación, revisa la Papelera de reciclaje o la Papelera, los elementos eliminados en la nube, el historial de versiones en la nube y las copias de seguridad del sistema. Los comandos de eliminación desde la terminal pueden saltarse la Papelera de reciclaje. Comprueba la ruta de almacenamiento original en lugar de dar por hecho que todos los archivos del proyecto se encontraban dentro del repositorio.

Un repositorio remoto puede restaurar las confirmaciones enviadas, pero no incluye automáticamente los archivos locales no controlados, las modificaciones no guardadas ni los «stashes» privados. Pregunta a tus compañeros de equipo si tienen copias independientes, por si el trabajo que falta se hubiera compartido en otro lugar.

Para git clean recovery, estas copias externas son especialmente importantes: Git no puede recuperar contenido que nunca ha almacenado, simplemente porque la eliminación se haya producido dentro de un repositorio.

Cuando los archivos perdidos de Git requieren una recuperación del disco

No procedas a la recuperación del almacenamiento hasta que hayas respondido a estas preguntas:

  1. ¿Contiene la rama, el índice, la confirmación, el stash u objeto persistente correctos la versión necesaria?
  2. ¿Lo puede proporcionar tu editor, el historial en la nube o la copia de seguridad?
  3. ¿Ha desaparecido el archivo de su ubicación original?
  4. ¿El dispositivo sigue siendo estable y detectable?

Si no existe ninguna copia válida y el archivo ha desaparecido realmente, Archivos perdidos en Git se convierte en un problema a nivel del disco. Algunos ejemplos son un script no registrado que se ha eliminado durante una limpieza, un directorio de proyecto borrado o una unidad formateada que contenía trabajo local.

Recuperar archivos de proyecto eliminados con Magic Data Recovery

Magic Data Recovery Admite situaciones de recuperación de Windows relacionadas con la eliminación, el formateo y los errores del sistema de archivos. Su flujo de trabajo de análisis y filtrado ofrece una forma práctica de examinar los archivos de proyecto recuperables cuando Git no dispone de ninguna copia almacenada.

Compatible con Windows 7/8/10/11 y Windows Server

La ventaja más relevante es el alcance: Git busca en sus propios registros, mientras que esta herramienta analiza el almacenamiento original. En el caso de un script local o un archivo de proyecto eliminado, esto lo convierte en una opción más adecuada que ejecutar repetidamente comandos de Git. El flujo de trabajo visual de análisis y revisión también te permite comprobar los elementos candidatos antes de incorporarlos de nuevo al proyecto.

Recuperar archivos de proyectos Git eliminados con Magic Data Recovery

Sigue estos cuatro pasos:

  1. Instálalo de forma segura. Instala y ejecuta la herramienta desde otra unidad o otro ordenador, siempre que sea posible. Reduce al mínimo las operaciones de escritura en el dispositivo afectado.
  2. Escanea el volumen original. Selecciona la unidad en la que se encontraban los archivos que faltan, aunque tu copia de trabajo actual esté en otra ubicación.
  3. Revisar a los candidatos. Utiliza los filtros disponibles de nombre de archivo, ruta y tipo. Previsualiza los formatos compatibles; comprueba los archivos de origen en un editor tras la exportación.
  4. Recupérate en otro sitio. Guarda los archivos seleccionados en una unidad física diferente y mantén intacto el repositorio original hasta que se haya realizado la verificación.

La recuperación puede devolver versiones anteriores, archivos incompletos o nombres modificados. La herramienta no puede inventar código no guardado, reconstruir relaciones de commit que falten ni restaurar dependencias automáticamente. Su utilidad en este caso radica en que soluciona la pérdida real de datos almacenados cuando fallan las opciones de recuperación nativas.

Comprueba los archivos recuperados antes de volver a incorporarte al proyecto

Para Recuperación de archivos perdidos en Git, el éxito consiste en obtener contenido útil, no solo un nombre de archivo en el resultado de un análisis.

Abre los archivos fuente recuperados en una carpeta aparte. Comprueba las funciones importantes, la codificación, los finales de línea y si los últimos cambios realmente existen. El tamaño de los archivos y las marcas de tiempo ofrecen pistas, pero no garantizan que hayas encontrado la versión correcta.

Compara el candidato con el proyecto actual. Copia solo los archivos verificados en un entorno de trabajo protegido y revisa git diff, y ejecuta la compilación o las pruebas correspondientes. Comprueba por separado los archivos de configuración y los recursos externos.

Por último, confirma los cambios restaurados en una rama de recuperación. Evita sustituir todo un .git directorio con metadatos parcialmente recuperados; recupera el contenido original por separado si la integridad del repositorio sigue siendo incierta.

Si la recuperación falla, comprueba la limitación

Un análisis más exhaustivo no puede recuperar el contenido sobrescrito. La función TRIM de los SSD y la posterior limpieza del dispositivo también pueden hacer que los datos eliminados dejen de estar disponibles. Microsoft’s Guía para la recuperación de archivos en Windows recomienda reducir el uso de la unidad y guardar los datos recuperados en una unidad independiente.

Si el dispositivo se desconecta repetidamente, emite ruidos extraños o da errores de lectura, deja de realizar escaneos repetidos. Para garantizar la estabilidad del dispositivo, vuelve a comprobar el volumen original y cualquier copia de seguridad externa antes de probar con otro software.

Algunos Archivos que faltan en Git Necesitas otra explicación. El «checkout» disperso deja fuera del árbol de trabajo, de forma intencionada, algunas rutas controladas, mientras que los submódulos mantienen el contenido del repositorio por separado. Revisa esas configuraciones antes de considerar una carpeta vacía como una eliminación. La documentación de Git checkout disperso y inicialización del submódulo.

Evitar la pérdida de archivos en Git en futuros proyectos

Guarda los hitos útiles y envía las ramas importantes a un repositorio remoto. Antes de limpiar un espacio de trabajo, previsualiza las rutas afectadas con git clean -nd; si quieres incluir archivos ignorados, comprueba git clean -ndx también.

Mantén activado el historial local del editor y haz una copia de seguridad de toda la carpeta del proyecto. Incluye los recursos no controlados y los activos externos que un repositorio remoto de Git no pueda sustituir. Revisa .gitignore A propósito: si se omite un archivo importante, no se creará una copia de seguridad del mismo.

Antes de realizar un restablecimiento o un rebase, guarda el trabajo en curso y comprueba qué incluye realmente tu copia de seguridad o tu «stash». Una breve comprobación ahora puede ahorrarte horas de reconstrucción más adelante.

Conclusión: Emparejar los archivos perdidos de Git con la copia que aún existe

Lo mejor Archivos perdidos en Git La solución depende de dónde se conserve la versión que falta. Utiliza el índice o una confirmación para los archivos controlados, el reflog para las confirmaciones perdidas y el historial del editor o las copias de seguridad para el contenido que Git nunca almacenó.

Si esas comprobaciones confirman que se ha producido una pérdida real de datos almacenados, Magic Data Recovery es una opción razonable en Windows, ya que soluciona problemas relacionados con el borrado, el formateo y los errores del sistema de archivos que van más allá de los registros de Git. Sigue las instrucciones de guía de recuperación de archivos eliminados, guarda los candidatos en otro lugar y comprueba el código antes de volver a incorporarlo a tu proyecto.

Compatible con Windows 7/8/10/11 y Windows Server

Preguntas frecuentes

1. ¿Puede Git recuperar archivos que nunca se han confirmado?

A veces. Es posible que Git siga conservando contenido que hayas marcado para la etapa con git add o guardada en un archivo oculto. Si Git nunca almacenó la versión que falta, comprueba el historial local del editor, las copias de seguridad y las copias en la nube. La recuperación del disco puede ser útil tras un borrado efectivo, pero no puede reconstruir el código que solo existía en la memoria.

2. ¿Cómo puedo recuperar un archivo borrado sin tener que restablecerlo todo?

Para una eliminación sin etapas, utiliza git restore -- ruta/al/archivo. Si has preparado la eliminación, restaura la ruta desde TÍTULO con --en fase de preparación --árbol de trabajo. Para una eliminación definitiva, identifica una revisión anterior que contenga el archivo y restaura únicamente esa ruta. Conserva el contenido más reciente antes de sustituir nada.

3. ¿Recupera el reflog de Git los cambios que no se han confirmado?

El reflog registra los movimientos de referencia, no el historial de cada edición. Puede ayudar a localizar una confirmación perdida tras un «reset», un «rebase» o un «amend». En el caso de contenido no confirmado, revisa el índice, los stashes, los blobs que hayan sobrevivido o el historial del editor. El reflog por sí solo no puede recuperar una versión que Git nunca haya almacenado.

4. ¿Puedo recuperar archivos después de ejecutar «git clean -fd»?

Es posible que se pueda hacer a través del historial del editor, copias de seguridad, copias en la nube o la recuperación del disco. El comando elimina los archivos y directorios no controlados. Si Git nunca ha almacenado su contenido, su historial no podrá restaurarlos. Deja de escribir en la unidad afectada, comprueba si hay otras copias y realiza un análisis solo si el dispositivo se mantiene estable.

5. ¿Por qué «git pull» indica que todo está al día cuando faltan archivos?

La orden «pull» integra el historial remoto; no garantiza que se vuelvan a crear todos los archivos que faltan en el árbol de trabajo cuando no haya nuevas confirmaciones que integrar. Comprueba git status y restaura las eliminaciones registradas desde la fuente correspondiente. Comprueba también tu rama actual, la configuración de «sparse-checkout» y si la carpeta que falta pertenece a un submódulo.

6. ¿Dónde guarda Git los archivos que se han perdido y se han recuperado?

En el caso de un repositorio estándar, git fsck --lost-found escribe objetos de recuperación pendientes en .git/lost-found/commit/ o .git/lost-found/other/. Las entradas «blob» contienen el contenido de los archivos, pero suelen carecer de los nombres de archivo originales. En los árboles de trabajo vinculados, localiza el directorio real de metadatos de Git antes de buscar estas carpetas.

7. ¿Puede Magic Data Recovery restaurar todo el repositorio de Git?

Es posible que recupere los archivos que hayan sobrevivido del almacenamiento afectado, pero la recuperación de archivos no garantiza que el repositorio quede intacto. Git también necesita objetos, referencias y metadatos coherentes. Recupera primero los archivos fuente en otra unidad, comprueba su contenido y vuelve a compilar a partir de un repositorio que sepas que funciona correctamente si los metadatos siguen estando incompletos.

8. ¿Al restaurar una versión anterior de Git se recuperan mis últimas modificaciones?

No. Al restaurar desde una confirmación, obtienes la versión que contiene dicha confirmación. Al restaurar desde el índice, obtienes la versión preparada. Ninguna de las dos opciones incluye automáticamente las modificaciones posteriores que no se hayan preparado. Busca esos cambios por separado en el historial del editor, en un «stash» o en otra copia guardada y, a continuación, compara las versiones recuperadas.

Jason es un especialista en recuperación de datos y asistencia técnica con más de 15 años de experiencia práctica. Ha trabajado intensamente con usuarios finales, resolviendo casos complejos de pérdida de datos y ofreciendo soluciones prácticas de recuperación para eliminaciones accidentales, unidades formateadas, sistemas de archivos dañados, particiones perdidas, fallos del sistema y otras situaciones de emergencia relacionadas con la recuperación. Su experiencia también abarca las copias de seguridad y la restauración, la reparación de archivos y la recuperación ante desastres, con especial énfasis en ofrecer una orientación segura, fiable y técnicamente precisa.