2011-06-07 11 views
7

Tengo un repositorio git que he estado usando durante el último año en la misma caja. Hoy corro git status y sale el mensaje de error:Repo de Git error con mensaje de que no es un repositorio ... pero es

fatal: Not a git repository (or any parent up to mount parent /home) 
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 

tengo un directorio .git y ha poblado con los miles de confirmaciones que tengo para que repo. No quiero volver a inicializar el repositorio por miedo a que sobrescriba la historia. Tampoco quiero volver a sacarlo de github ya que tengo algunos cambios escondidos en las ramas que hace mucho tiempo que no llevo a GH.

edición:

estoy razonablemente seguro de que no es mi ambiente. Otros repositorios git funcionan perfectamente

+1

¿Qué tal si hacemos un 'git clone' en un directorio temporal y hacemos la fusión de los cambios almacenados manualmente? –

+0

¿Qué dice si 'cd .git' y 'git log'? – karmakaze

+0

@karmakaze Recibo el mismo mensaje de error @Fredrick gracias por la sugerencia. Me gustaría ver si hay algún sistema de archivos/git wizardry que pueda hacer antes de saltar para copiar manualmente – brycemcd

Respuesta

6

me gustaría publicar algunos comentarios del archivo de fuente apropiada de git:

descubrimiento repositorio git se realiza según abajo:

/* 
* Test in the following order (relative to the cwd): 
* - .git (file containing "gitdir: <path>") 
* - .git/ 
* - ./ (bare) 
* - ../.git 
* - ../.git/ 
* - ../ (bare) 
* - ../../.git/ 
* etc. 
*/ 

Y comprueba que se trata de un repositorio git de la siguiente :

/* 
* Test if it looks like we're at a git directory. 
* We want to see: 
* 
* - either an objects/ directory _or_ the proper 
* GIT_OBJECT_DIRECTORY environment variable 
* - a refs/ directory 
* - either a HEAD symlink or a HEAD file that is formatted as 
* a proper "ref:", or a regular file HEAD that has a properly 
* formatted sha1 object name. 
*/ 

Vea qué pasa con su .git. Esto se relaciona con la respuesta de @Chris Nicola del HEAD en minúsculas, etc.

+0

buena llamada. Parece que mi directorio de objetos se corrompió .../suspiro. Gracias @manojilds. – brycemcd

0

Clonar de todos modos a otro directorio. Puede copiar el objeto del directorio .git en el repositorio original con los stashes a la carpeta .git en el nuevo repositorio. Omita los archivos que se sobrescribirán. Debería poder copiar los punteros y gitk, todos deberían mostrarlos.

2

Es difícil decir la causa exacta, pero su archivo .git debe estar dañado de alguna manera. Hay una publicación de blog here en la que un tipo tenía su archivo HEAD renombrado en minúsculas en su sistema de alguna manera, lo que le causó ese problema. No dice que ese es su problema en particular, pero es posible que desee mirar más de cerca en la carpeta .git.

Puede intentar salir de github en una nueva carpeta y luego comparar las dos carpetas .git para ver las diferencias.

+1

Si esto resulta NO ser el problema para el OP, le sugiero encarecidamente que cree una nueva pregunta y luego responda con esto como su respuesta.Esto debería ser lo suficientemente alto para que cualquier persona que busque problemas de Git lo pueda encontrar. Información muy útil. –

+0

Consideraré que, en realidad, nunca me pasó a mí, pero podría ver que es un buen paso para la resolución de problemas de Windows, aunque no mucha gente usa los sistemas FAT/VFAT, así que no sé con qué frecuencia esto realmente sucederá. –

+0

Tuve un problema similar hoy, en mi caso hice una copia de seguridad del repositorio en una unidad NTFS externa, y el archivo HEAD que era un enlace simbólico a .git/refs/heads/master no se copió en absoluto. Un 'ln -s .git/refs/heads/master .git/HEAD' corrigió el repositorio ... – l4mpi

0

Otra posibilidad podría ser que los permisos de sus archivos git se hayan dañado. Verifique para asegurarse de haber leído los permisos.

He tenido un problema similar cuando mi permiso está dañado mientras se conecta a una computadora.

-1

Compruebe si está dando este comando desde el directorio de la derecha. Me enfrenté al mismo error. Luego fui al directorio donde está presente .git y le di el comando. Está funcionando correctamente.

Cuestiones relacionadas