Estoy ejecutando git 1.6.4.2. La recolección de basura está fallando diciendo "error: no se puede encontrar <SHA1>
".Git - cómo recuperarse de un blob perdido
He logrado determinar que el objeto que falta es un blob, y no hay forma de que pueda recuperar el blob. Parece que 2 scripts que ejecutan "git add" y "git commit" se estaban ejecutando al mismo tiempo y se las arreglaron para interferir entre sí, de modo que uno cometió una versión más nueva de un archivo que el otro, y el blob de la versión anterior desapareció.
Entonces, lo que estoy tratando de hacer ahora es retrotraer mi repositorio para sacar la confirmación que se refiere al árbol que se refiere al blob que falta.
Sé en qué rama estaba la confirmación, así que ejecuté "git reset" para rebobinar al padre de la confirmación duff. Y sé que la sucursal se fusionó en otro lugar, así que reescribí esa sucursal también. Hasta donde yo sé, duff commit/tree/blob no son referenciados por nada. Pero si ejecuto git prune --expire = ahora seguido de git gc, entonces sigo recibiendo un error sobre el objeto faltante.
Así que mi pregunta es esta: ¿cómo puedo consultar la base de datos de git para encontrar cada objeto de árbol que contiene la id del blob duff? ¿Y cómo puedo averiguar qué está causando que git prune lo retenga?
Tricky !!
Gracias Kevin
¿Has probado 'git fsck'? http://book.git-scm.com/4_maintaining_git.html –
No estoy seguro de entender lo que sucedió. ¿Puedes reportar lo que dice 'git fsck'? –
Después de un poco más de excavación resulta que mi pregunta es respondida aquí: http://stackoverflow.com/questions/7201720/how-to-delete-a-blob-from-git-repo git prune no era podando las cosas que había recuperado porque el reflog todavía se estaba refiriendo a él - git reflog expire --exires = now --todo arreglado que y la publicación referenciada proporciona un mecanismo para ejecutar git lstree en cada confirmación para encontrar el referido blob – kbro