Mi repositorio de git de alguna manera se ha vuelto inestable: cargué msysgit esta mañana y en lugar de que el nombre de la rama se muestre después del directorio actual, dice "((ref: re ...))", 'git status' informa todo como un nuevo archivo, 'git log' y 'git reflog' me dicen "fatal: mala revisión predeterminada 'HEAD'", y así sucesivamente.
Hacer 'git reflog --all' o 'gitk --all' me muestra que el resto del repositorio está intacto, pero parece que la rama en la que estaba trabajando acaba de desaparecer, lo que explica por qué HEAD no parece existir / señalar cualquier cosa.
Sé que git mantiene todo tipo de información, y supongo que mis confirmaciones se han quedado huérfanas de alguna manera, así que ¿hay algún comando que me muestre esas confirmaciones para que pueda restablecer HEAD en ellas?
EDITAR: Oh cielos. Descubrí 'git fsck' y 'git fsck --full' informa "fatal: object 03ca4 ... is corrupted". ¿Qué diablos puedo hacer al respecto?
EDITAR: Oh, Dios mío, Dios mío. Revisé otra rama, luego intenté volver a crear la rama original con el mismo nombre usando 'git checkout -b lostbranchname', y git dice "error: no se pueden resolver las referencias de referencia / heads / lostbranchname: Sin error, fatal: Failed para bloquear ref para actualización: No hay error ". 'Sin error' debe ser un error particularmente desagradable. Entonces parece que todavía está dando vueltas, pero no se puede usar y no se puede matar.
EDITAR: Super duper oh cielos. He desempacado, reempacado y reemplazado cosas como se sugiere aquí: ¿Cómo recuperar objetos Git dañados por fallas en el disco duro? , pero ahora recibo otro hash informado como corrupto, por algo tan inocuo como 'git status'. Creo que todo está regado. Git es encantador y todo eso, pero no debería tener que lidiar con este tipo de cosas.
git checkout -b lostbranchname: si solo le importa el nombre de la rama (no el contenido de la misma), puede eliminarla manualmente (o cambiarle el nombre).git/refs/heads/lostbranchname, es de esperar que funcione.