Cómo recuperar un alijo de Git caído, una rama eliminada o confirmaciones perdidas
Un alijo eliminado o una rama eliminada rara vez desaparecen para siempre: Git mantiene las confirmaciones hasta que la recolección de basura las elimina. Encuéntrelos con reflog o git fsck, verifique lo que contienen y vuelva a colocarlos en una rama antes de que sea demasiado tarde.
Escrito por Kodmora
La casa de software detrás de GitTree
- alijo
- Deshacer y recuperar
En esta página
Cuando sueltas un alijo o eliminas una rama, Git elimina el nombre, no las confirmaciones. Las confirmaciones permanecen en el repositorio como objetos inalcanzables hasta que la recolección de basura los elimina, generalmente después de dos semanas o más. Encuentre la última confirmación de una rama eliminada en el registro nuevo con git reflog, busque un alijo eliminado con git fsck --unreachable, compruébelo con git show y luego guárdelo con git branch rescue <sha>.
Esta guía cubre cada caso con los comandos exactos, explica durante cuánto tiempo Git mantiene el trabajo perdido y qué no se puede recuperar, y muestra la misma recuperación en Lost & Found de GitTree, que busca en todas las fuentes a la vez y nunca verifica ni restablece nada. Lost & Found es parte del plan gratuito de GitTree. Para deshacer un reinicio, un rebase o una modificación, lea cómo deshacer git reset, rebase y commit en su lugar.
Dónde vive realmente el trabajo "perdido" de Git
Se puede alcanzar una confirmación cuando una rama, una etiqueta, el alijo o HEAD conducen a ella. Eliminar una rama o soltar un alijo hace que sus confirmaciones sean inalcanzables, pero permanecen en .git/objects. Dos registros te ayudan a encontrarlos: el reflog, donde apuntaba cada rama y HEAD antes, y la base de datos de objetos en sí, que git fsck puede buscar.
| lo que perdiste | donde buscar | Comando |
|---|---|---|
| Una rama eliminada que habías retirado | Reflog de HEAD | git reflog |
| Una rama eliminada que nunca revisaste | Confirmaciones inalcanzables | git fsck --unreachable |
| Un alijo caído o eliminado | Confirmaciones inalcanzables en forma de fusión | git fsck --unreachable | grep commit |
| Confirmaciones perdidas después de un reinicio o rebase | El reflog de la rama | git reflog show <branch> |
| Cambios nunca confirmados o escondidos | En ninguna parte en Git | No recuperable de Git |
Recuperar una rama eliminada
Git imprime la última confirmación de la rama cuando la eliminas (Deleted branch feature/login (was 3f2a9c1)). Si ese mensaje desapareció, busque en el registro de HEAD la última vez que estuvo en la rama, luego vuelva a crear la rama en esa confirmación.
# find the last commit of the branch
git reflog | grep "feature/login"
# check what it holds
git show 3f2a9c1 --stat
# put the branch back
git branch feature/login 3f2a9c1Recuperar un alijo caído
Un alijo no tiene reflog propio una vez que se elimina, así que busque las confirmaciones inalcanzables. Un alijo es una confirmación en forma de combinación cuyo mensaje comienza con WIP on o On <branch>:, lo que facilita su filtrado. Este es el método que describe la propia documentación oculta de Git.
# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
| xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"
# inspect a candidate
git stash show -p 7c1e0b4
# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4Encuentre cada confirmación pendiente con git fsck --lost-found
git fsck --lost-found enumera las confirmaciones pendientes y escribe una copia de cada una en .git/lost-found/commit/, denominada por su ID. Úsalo cuando no sepas lo que estás buscando: enuméralos con sus fechas y mensajes, luego pasa del que deseas.
git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0eRecuperar trabajo perdido con Lost & Found de GitTree
Abrir objetos perdidos y encontrados
Elija Herramientas → Objetos perdidos o presione
Alt+Shift+D. Se abre como una ventana completa en su página Inicio, que explica las tres fuentes que busca: el reflog, las referencias de recuperación de GitTree y los objetos inalcanzables.Encuentra trabajo local
Marque Incluir un análisis más profundo de objetos inalcanzables para buscar también escondites caídos, luego presione Buscar trabajo local. Trabajo encontrado enumera cada resultado con su fuente y cuándo fue visto; Filtrar por confirmación, mensaje o fuente reduce la lista.
Inspeccione antes de guardar
Seleccione un resultado: Por qué aparece este objeto muestra su evidencia, su mensaje y los archivos aparecen a su lado, y cada archivo abre su contenido. No se comprueba ni se aplica nada.
Mantenlo en una rama
En Mantener esta confirmación, escriba un Nombre de nueva rama y presione Crear rama de recuperación. Recuperado enumera la rama; Mostrar en gráfico salta a él. Sus archivos de checkout y de trabajo no cambian.

¿Cuánto tiempo mantiene Git las confirmaciones perdidas?
| Configuración | Predeterminado | lo que controla |
|---|---|---|
gc.reflogExpire | 90 dias | Las entradas de Reflog para confirmaciones aún son accesibles |
gc.reflogExpireUnreachable | 30 dias | Ya no se puede acceder a las entradas de reflog para confirmaciones |
gc.pruneExpire | 2 semanas | Objetos inalcanzables sin entrada de registro, como un alijo caído |
La recolección de basura se ejecuta por sí sola después de algunos comandos, por lo que son ventanas, no promesas. Cuanto antes miras, más encuentras. Una copia en otro lugar, como el clon de un compañero de equipo o una rama enviada, es la otra red de seguridad: el trabajo perdido sólo en tu computadora existe sólo allí.
Lo que no se puede recuperar
- Cambios que nunca se confirmaron o guardaron, como ediciones descartadas con
git checkout -- <file>ogit restore. - Archivos sin seguimiento que no estaban en un alijo creado con
-u. - Confirma que la recolección de basura ya se ha podado.
- Trabajo que sólo existió en la computadora de otra persona.
Próximos pasos: la guía de objetos perdidos documenta cada página y botón, buscar consejos sobre ramas anteriores cubre la vista de registro y la guía de git stash explica cómo aplicar, abrir y archivos sin seguimiento para que necesites recuperarlos con menos frecuencia.
Preguntas frecuentes
¿Puedo recuperar un alijo de git caído?
Generalmente sí. Un alijo eliminado se convierte en una confirmación inalcanzable hasta que la recolección de basura lo elimina. Encuéntrelo con git fsck --unreachable, inspecciónelo con git stash show -p <sha>, luego git stash apply <sha> o git branch <name> <sha>.
¿Cómo recupero una rama eliminada en Git?
Busque la última confirmación de la rama en git reflog (o el mensaje "era <sha>" que Git imprimió cuando la eliminó), luego ejecute git branch <name> <sha> para restablecer la rama.
¿Qué es un commit pendiente?
Una confirmación a la que no apunta ninguna entrada de rama, etiqueta, almacenamiento o reflog. git fsck --lost-found los enumera y los copia en .git/lost-found/commit/ para que pueda inspeccionarlos.
¿Git gc elimina las confirmaciones perdidas?
Sí, una vez que sean más antiguos que la configuración de caducidad: de forma predeterminada, los objetos inalcanzables sin una entrada de registro se eliminan después de dos semanas. Evite git gc y git prune hasta que haya recuperado su trabajo.
¿Puedo recuperar cambios que nunca cometí?
No de Git. Sólo el trabajo confirmado o escondido está en la base de datos de objetos. El historial local de su editor o una copia de seguridad es el lugar donde debe buscar.
¿Los objetos perdidos y encontrados de GitTree son gratuitos?
Sí. Lost & Found es parte del plan gratuito de GitTree. Solo lee su repositorio local y el único cambio que realiza es la rama de recuperación que solicita.
Fuentes
Las afirmaciones sobre otros productos se compararon con sus páginas oficiales el 5 de noviembre de 2026. Los precios y las características cambian; Las páginas de los proveedores son la fuente de la verdad.