2011-03-28 12 views
25

Esto es un gran dolor en el trasero. Lo he hecho algunas veces y no entiendo por qué. Hace 5 minutos el repositorio estaba bien y funcionaba, moví algunos archivos (lo cual es genial y todo) y git se caga en los pantalones. ¿Alguna idea de por qué sucede esto? ¿Cómo puedo solucionarlo aparte de clonar el repositorio, mover los archivos, etc ...¿Por qué me sale "fatal: estado de git --porcelana fallida"?

Respuesta

35

Oh querido soy un fracaso. Parece que el problema proviene de la copia de Flash Builder sobre otros repositorios .git en subcarpetas. La respuesta es eliminar todas las carpetas .git que no son del repositorio.

+0

No sabía, todavía tengo algunos archivos relacionados con .git de un viejo submódulo por ahí, después de que los quité, volví a estar en negro. – electblake

+0

en realidad, probablemente sería necesario eliminar las carpetas '.git' de la carpeta' vendor' de solo las dependencias de las unidades problemáticas. Me ha sucedido con la dependencia '@ dev' después de que el repositorio objetivo haya pasado por un cambio de base. – hejdav

1

No tengo ninguna carpeta .git en mi repositorio, pero cada vez que copio mis archivos nuevos en mi carpeta para actualizar mi aplicación, sigo obteniendo errores fallidos en la porcelana de índice corrupto. No entiendo cómo la actualización de archivos corrompería esto o cómo solucionarlo. ¿Alguien tiene más información sobre esto?

+0

¿Entonces solo tiene una carpeta .git en toda la estructura del directorio? –

+0

Me di cuenta de esto. Por alguna razón, un complemento de tortas que tenía en el directorio de aplicaciones/complementos siguió causando que esto se rompiera. Pasé como 3 horas reemplazando cada carpeta hasta que encontré la. Creo que fue un código horrible que encontré en algún lado y que ni siquiera lo estaba usando recientemente. Eliminado esa carpeta y todo es perfecto. Gracias. – rncrtr

+0

¿Es posible que esto ocurra con una nueva instalación de cualquiera de los módulos CoffeeScript de 'npm', específicamente los' gruñones', incluso si no he creado ningún plugin 'cake' por mí mismo? – trysis

4

En caso de que ayude a alguien más, acabo de encontrar el mismo problema y descubrí que al ejecutar git init en la raíz del proyecto se arregló.

3

Me encontré con este error debido a un submódulo dañado/no inicializado correctamente (con su propia subcarpeta .git). Eliminé temporalmente la carpeta de submódulos y usé git init en la raíz del proyecto principal. Solucionado el problema para mí.

+1

Esta fue también mi causa, pero además de eliminar las carpetas de submódulos, tuve que volver a ejecutar 'git submodule init && git submodule update' también. – starkos

2

Tuve el mismo problema. Correr git status en el directorio de mi proyecto raíz produce el siguiente error:

fatal: This operation must be run in a work tree 
fatal: 'git status --porcelain' failed in submodule js/object-subscribe 

corriendo git status en el submódulo afectada (js/object-subscribe) produciría este error:

fatal: This operation must be run in a work tree 

corriendo git init en la carpeta de ese submódulo lo hizo por mí .

0

Por lo general, git crea un directorio oculto en el directorio raíz del proyecto (.git /)

Cuando se trabaja en un CMS, es posible instalar módulos/plugins llevar .git/directorio con los metadatos de git para la módulo específico/complemento

Si no desea utilizar la función de submódulos de git, la solución más rápida eliminar todos los directorios .git, excepto el directorio de metadatos root git. Si lo hace, git no tendrá en cuenta esos módulos como submódulos del proyecto.

cd /path/to/your/project/code 
find ./ | grep ".git/index" 

Una vez localizado borrado ".git" todos los directorios, excepto la raíz, pero si lo eliminó inicializar tu repositorio nuevo

3

Sé que esto es un viejo hilo, pero sólo tenía el mismo problema y terminó resolviendo de una manera diferente. El git init no funcionó para mí. Publicando aquí, en caso de que sea útil para cualquier otra persona.

Mi repositorio tiene dos submódulos. Después de rebasar comencé a recibir el error fatal: estado de git --porcelana falló.

La solución fue verificar la propiedad worktree en cada archivo de submódulo config - p. <repository-checkout>/.git/modules/<submodule-name>/config.

Tenía una ruta no válida para la propiedad worktree.Se estaba vinculando a una carpeta inexistente que se cambió y se fusionó en master, probablemente debido a un error al resolver conflictos.

0

.git es un archivo en submódulos y apunta a un directorio ubicado en su directorio raíz .git.

En mi caso, estaba montando un directorio de git en el acoplador y comprobando el estado allí. El archivo .git de este submódulo contenía una ruta absoluta que no era válida en la ventana acoplable. Edité este archivo .git en para cambiar la ruta de acceso de gitdir a una ruta relativa.

Git versión: 2.7.4

0

En mi caso después de mover moduleA/mySubmodule-moduleB/mySubmodule usando git mv moduleA moduleB con git 2.12.2, me encontré con el error follwoing:

$ git status 
fatal: Could not chdir to '[../]moduleA/mySubmodule': No such file or directory 
fatal: 'git status --porcelain' failed in submodule mySubmodule 
fatal: 'git status --porcelain' failed in submodule moduleB 

luego hice la follwing (tal vez no en este orden)

  1. actualizar manualmente .gitmodules entrada a moduleB
  2. Introduzca .git/modules y cambiar el nombre de la carpeta del módulo de edad
  3. Introduzca moduleB y eliminar la carpeta submódulos
  4. Run git submodule sync y git submodule update

Después de eso, pude correr git status de nuevo sin problemas.

Cuestiones relacionadas