tag - Cómo diagnosticar y corregir git fatal: no se puede leer el árbol
qué tipos de etiquetas existen en git (4)
Estoy usando git
para administrar archivos en un proyecto y sigo encontrándome con este problema.
Cuando ejecuto el git status
obtengo el mensaje
fatal: unable to read tree e2d920161d41631066945a3cbcd1b043de919570
Según lo entiendo, debería verificar la salida de git fsck
, y recibo
broken link from tree e09a42f248afff64336fbbec2523df97c26451ac
to tree e2d920161d41631066945a3cbcd1b043de919570
broken link from tree e09a42f248afff64336fbbec2523df97c26451ac
to tree 9b0dd389bd7f9e8d257395d57e0881b7957f9698
broken link from tree e09a42f248afff64336fbbec2523df97c26451ac
to tree 9e288a4ad60d63f342dfd18237980674426aa725
broken link from tree e09a42f248afff64336fbbec2523df97c26451ac
to tree 2a04647337089f554fab8c49cfd37149e5f4fc9f
broken link from tree e09a42f248afff64336fbbec2523df97c26451ac
to tree ea16658b45ce961adc3c3f519b0e8d9672918ca8
junto con una gran cantidad de mensajes missing blob
.
Siguiendo varios recursos (p. Ej., Git: enlaces rotos, árboles desaparecidos y colgantes ) simplemente he vuelto a clonar el proyecto de github
y comencé de nuevo.
Una vez que he vuelto a clonar el proyecto, todo está bien para algunos commit
, y luego el problema surge nuevamente. Volver a clonar cada vez no parece ser óptimo, y parece ir en contra de la idea de usar git
, y me gustaría tratar de entender lo que está sucediendo. ¿Cómo puedo diagnosticar y solucionar este problema?
Algo que simplemente funcionó para mí fue esconder mis cambios, hacer un jalón, y luego hacer estallar los cambios de la pila de alijo. Mi corrupción podría haber sido bastante superficial, por lo que probablemente no funcione para todos, pero vale la pena intentarlo.
Aquí está la salida que obtuve cuando escondí:
work@home ~/code/project $ git stash
fatal: unable to read tree 5fd5f4d0425b42e5b478773fa643dd6fd4918188
fatal: unable to read tree 5fd5f4d0425b42e5b478773fa643dd6fd4918188
Saved working directory and index state WIP on master: d93430c Generic commit msg.
HEAD is now at d93430c An older generic message.
Después de eso tiré y luego salté y se limpió. Nuevamente, YMMV.
Comenzaría con un clon nuevo y luego ejecutaría git fsck
en el clon sin cambios git fsck
cambios. Me pregunto (como arriba) si su clon inicial está dañado, pero de una manera que le permite realizar algunas operaciones antes de orfanar los árboles.
Esto puede o no ser el problema planteado originalmente aquí, pero tenga en cuenta que verá un error "fatal: no se puede leer el árbol" de git si la cuenta de usuario en la que se ejecuta el comando git ya no puede leer todos los archivos marcados de su repositorio debido a un problema de propiedad / permisos.
Por lo tanto, en muchos casos, lo primero que debe verificar es que tenga la propiedad y los permisos establecidos correctamente en los archivos en su árbol de trabajo, ya que eso puede solucionar el problema. :)
Siguiendo mi recomendación anterior , todo se reduce a poder encontrar un repositorio que contenga realmente los elementos faltantes (aquí los árboles completos).
Esto es lo que se muestra en " Cómo arreglar el repositorio de git dañado ".
Pero si un clon completo no resuelve el problema, entonces puede ser:
- una corrupción del repositorio en el lado de GitHub (póngase en contacto con el soporte de GitHub para verificar).
- algún tipo de corrupción en el lado del cliente (su Ubuntu). Asegúrese de verificar si el problema persiste con la última versión de Git (1.8.5.2-1) de un PPA personalizado (Archivo de paquetes personales) .
Actualice julio de 2016, y próximamente se lanzará Git 2.10, ahora tiene:
git fsck --name-objects
Consulte " Cómo solucionar el error del enlace error de git de un árbol a otro " para obtener más información.