2011-09-11 7 views
14

Mi batería murió en mi macbook al empujar mi repositorio. Ahora no puedo correr git statusno se puede arreglar el objeto malo HEAD error con el estado de git

$ git status 
fatal: bad object HEAD 
fatal: git status --porcelain failed 

He intentado algunas sugerencias he encontrado para la fijación de los malos errores de objeto.

$ git fsck --full 
dangling tree 65e856976b7aa7c73f15cd71defedb8a3d622a10 

He intentado git prune y git prune-packed

Todavía puedo cometer, escondite, empuje, parece que se acaba afectando git status

Andy ideas?

Gracias

+0

Tuve exactamente el mismo problema. Gracias por la solución! – Mauren

Respuesta

2

Si su .git/HEAD está dañado o apunta a un objeto dañado, puede cambiar de forma manual o mediante git checkout.

+0

Hola, no hace ninguna diferencia. HEAD apunta a refs/heads/master – Rob

+0

aunque, refs/heads/master no existe. – Rob

+0

Por lo tanto, debe verificar una sucursal real (y/o restaurar 'refs/heads/master' si existiera). Sin embargo, tenga en cuenta que los refs suelen estar ahora en '.git/packed-refs'. – wRAR

0

Intente agregar todos sus archivos modificados con git add filepath/file.ext antes del estado de git.

28

supongo que ya solucionado este problema pero yo tenía esto que podría solucionarlo y simplemente plazo

git pull 

Esto ha resultado en una condición de trabajo. A pesar de que sus archivos están intactos, debe hacer una copia de seguridad de su directorio git local y luego ejecutar el git pull. después de eso deberías volver a estar en el negocio.

Si hay archivos eliminados (no debería suceder) puede copiarlos de nuevo en un proceso de pago y confirmarlos desde allí.

+1

Solución fácil, funcionó muy bien también. ¡Gracias por el consejo! –

+1

Esto funcionó para mí, pero tuvo que '' esconderse'' cambios locales antes de que me permitiera tirar. Gracias. –

2

Esto me pasó cuando accidentalmente agregué mi bin/carpeta en un proyecto de Eclipse Java.

El uso de 'git pull' no funcionó para mí.

me fijo por:

  1. cierre Eclipse
  2. bin rm -rf
  3. bin git rm

entonces yo era capaz de 'git commit' y continuar normalmente.

1

Esto funcionó para mí:

git fetch origin 
git reset --hard origin/master 
0

git checkout -f *branchname* trabajó para mí.

Cuestiones relacionadas