Una cosa extraña ocurrido a mi repositorio de git. Cuando yo intente cometer algo en tortoisegit ventana de recibir todos los archivos de proyecto. No puedo volver, cuando me tire desde el servidor de recibir fatal: No such ref: HEAD y fatal: Cannot lock the ref 'HEAD'. Todos mis ramas locales están perdiendo. Es allí cualquier manera de resolver el problema?

Este no es el primer commit o algo. Esta cosa que ha ocurrido de repente.

EDICIÓN:

git branch -a dice: Failed to resolve HEAD as a valid ref

git status imprime todos los archivos de proyecto marcado como archivo nuevo.

He cambiado repositorio nombre de la carpeta por un tiempo, y cuando he cambiado de nuevo las cosas no eran correctas.

  • ¿Qué hiciste cuando esto sucedió? Puedes mostrar la salida de git status y git branch -a?
  • Sólo para disipar toda duda, la carpeta de repositorio ¿te refieres a la carpeta con el nombre .git?
  • No, una carpeta de proyecto, que contiene .git directamente
  • ¿Qué versión de git estás usando?
  • TortoiseGit 1.5.8.0 versión git 1.7.3.1.msysgit.0
InformationsquelleAutor szaman | 2011-01-31

4 Comentarios

  1. 67

    Has perdido tu HEAD así que tendrás que volver a crearlo. Lo más sencillo es esto.

    echo ref: refs/heads/master >.git/HEAD
    

    Ahora usted debería ser capaz de ejecutar otros comandos de git y ver dónde estás.

    (Aunque, en teoría, se podría intentar hacer git symbolic-ref HEAD refs/heads/master nuevas versiones git no reconocer un .git como un repositorio de git, a menos que ya contiene un HEAD así que esto no va a funcionar para crear una nueva).

    • Ok, hice como usted escribió. Después de echo yo estaba en la rama master, me hizo cometer y fue capaz de cambiar a mi rama principal. Pero ahora cuando trato de cambiar a cualquiera de mis ramas locales de recibir ‘error: pathspec ‘812’ no coincide con ningún archivo(s) conoce a git.’
    • No sé, pero parece que la falta HEAD no era la única cosa que es corrupto en su repositorio. Se puede restaurar desde la copia de seguridad o re-clon?
    • Lo resolvió… casi. Después he aplicado la punta de su vi repo de registro. No era sólo la última cometer falta, así que he creado una nueva rama se basa en la última 812 que he encontrado. Ahora puedo cambiar a ella. Los archivos desde el último commit puedo tomar de copia de rota repositorio, porque estaba trabajando en 812 cuando este accidente ha ocurrido. Muchas gracias por la ayuda
    • ty. Yo de alguna manera accidental agrega «s\n» a la CABEZA a través de vim fugitivo plugin. su respuesta ayudó a encontrar ese archivo.
    • ¿Dónde tengo que escribir esto?
    • se puede ejecutar en el directorio de su proyecto con .git en el interior.
    • por cierto, reemplazar master con el nombre de la sucursal, de echo ref: refs/heads/your_branch_name >.git/HEAD

  2. 6

    HEAD es generalmente una referencia a una rama particular; en su caso, parece que la rama de punteros han desaparecido, por lo que la CABEZA de la referencia no puede ser resuelto.

    Puede utilizar git fsck --lost-found para escanear la memoria caché de objetos para inalcanzable objetos; específicamente, usted está interesado en la cometa, que a continuación puede encontrar a continuación .git/lost-found/commit/; estos son los punteros a las ramas, todo lo que necesitas hacer es averiguar cual es cual, y crear nuevas referencias utilizando git branch.

    • cuando yo escriba git fsck tengo un error no Válido CABEZA
    • ¿El uso de la --lost-found opción?
    • Sí, me hizo uso de ella 🙂
    • Hizo crear el lost-found directorio?
    • Sí, sí que lo creó, pero en la carpeta confirmar es mucho menos que los archivos que tenía sucursales locales
    • Usted estará perdiendo todas las ramas cuya cabeza es un padre de comprometerse por otra rama. El git fsck comando encontrará compromete a que no se señaló por otro commit o una rama puntero, por lo que si una rama es en la parte superior de otro, entonces no hay una confirmación objeto hace referencia a la otra punta de la rama, por lo que ninguna referencia se crea.

  3. 6

    Creo que esta respuesta puede ser útil para alguien.
    He resuelto este problema casi.
    Primero lo que hice fue, como Charles Bailey escribió, uso

    echo ref: refs/heads/master >.git/HEAD
    

    Entonces mi rama cambiado de amo. Me hiciste cambios y fue capaz de cambiar a mi rama principal. El problema era que yo no era capaz de utilizar cualquiera de mis ramas locales. Especialmente quería trabajar en la rama 812. Por lo que he encontrado último commit de la rama 812 (crear mensaje cuando cometemos es muy útil ;)) y se conecta a ella. A continuación he creado rama 812 basa en la cambié. Por desgracia, algunos de los archivos que faltaban. Por suerte yo los tenía en la quebrada de repos que he copiado antes de ‘echo’

  4. 2

    Para mí, el problema fue que en Mac OS X, ya sea el ‘uchg’ o ‘uappnd’ de la bandera, el bloqueo de algunos git archivos, independientemente de los permanentes. Puedo restablecer el chflags como este y resuelto por mí:

    sudo chflags -R 0000 .
    
    • Yo tenía problemas de permisos en Linux.
    • sí, GNU/Linux va a respetar el chflags cuando monta HFS+

Dejar respuesta

Please enter your comment!
Please enter your name here