2011-01-06 23 views
26

que tienen un proyecto con la siguiente estructura de carpetas:archivos sin seguimiento no se muestran en git status

Todos los archivos de proyecto están en carpeta base_fldr. También tengo algunas carpetas dentro de base_fldr llamadas sub_fldr1 y sub_fldr2. Estas subcarpetas también contienen algunos archivos.

Si modifico alguno de los archivos dentro de mi base_fldr o base_fldr \ sub_fldr \, entonces el estado de git los muestra como modificados. Además, si agrego un nuevo archivo a base_fldr, el estado de git lo mostrará como un archivo sin seguimiento.

Mi problema es si agrego un nuevo archivo dentro de base_fldr \ sub_fldr \, entonces el estado de git no muestra el archivo como no rastreado. Ni siquiera dará información sobre el archivo.

El archivo o su extensión NO está en mi lista .gitignore. También probé git add sub_fldr \ file_name pero ni dio un error ni agregó el archivo al índice.

¿Alguna idea de lo que está pasando aquí? ¡Gracias!

+3

¿Aparece el archivo si ejecuta 'git status -u' –

+1

No, no lo hizo. git status -u muestra los archivos recién agregados dentro de mi base_fldr pero no los que están dentro de base_fldr \ sub_fldr | – kriver

Respuesta

20

Descubrí lo que estaba pasando mal. Básicamente, la primera línea de mi archivo .gitignore es "* /". Esto hace que cualquier archivo agregado al subdirectorio sea ignorado por el comando de estado de git. Pero lo curioso es que si modifico cualquier archivo en la subcarpeta, el estado de git los muestra correctamente, ya que el archivo ya está en el repositorio git, pero ignoró los nuevos archivos en la subcarpeta.

Resolví mi problema al eliminar la línea en el archivo .gitignore para no ignorar los cambios en las subcarpetas, luego agregué los nuevos archivos al índice y luego volví a agregar la línea en .gitignore para que ignore cualquier archivo generado en subcarpetas.

Gracias a todos por las respuestas.

+3

Me pasó lo mismo y finalmente me di cuenta de que ya había agregado el nombre de la carpeta que creé al archivo .gitignore hace meses sin ninguna razón aparente. Pero +1 para esta respuesta que me obliga a comprobarlo ;-) ... y -1 para buscar StackOverflow incluso antes de comprobar que primero – PandaWood

8

¿Tiene un subdirectorio .git dentro de su directorio sub_fldr? Git puede pensar que estás tratando de usar submodules.

+0

No hay directorio .git dentro de sub_fldr – kriver

+0

Si tiene un subdirectorio .git a continuación, los cambios deben aparecer en el elemento principal – quantumpotato

+0

, asegúrese de tener "mostrar todos los archivos" configurado, eso me mantuvo ocupado durante unas horas. Tenía un subdirectorio ".git", no pude verlo. Pero Git podría ... – TobyEvans

13

Esto es probablemente debido a que su base_fldr \ sub_fldr \ directorio es sin seguimiento, si ejecuta:

git add base_fldr\sub_fldr\ 

Desde el interior de la raíz de su copia de trabajo, se añadirá automáticamente el directorio y otros archivos y directorios dentro de ese directorio que bien.

De forma predeterminada, git no mostrará los archivos dentro de los directorios que no se han rastreado.

+0

El OP dice que los archivos modificados dentro de 'sub_fldr' * se * muestran en' estado de git'. –

+0

Mi base_fldr \ sub_fldr \ se rastrea. En realidad, si modifico correctamente el estado de un archivo existente, git muestra el archivo dentro de sub_fldr como modificado. – kriver

2

Aquí hay otra causa del comportamiento descrito en esta pregunta (la lista de archivos de estado sin seguimiento de git no incluye un archivo sin seguimiento en una subcarpeta). Si el archivo no se rastreó debido a un archivo .gitignore en la subcarpeta, entonces el archivo no se incluirá en la lista de archivos sin seguimiento del estado de git.

14

Me encontré con un problema similar con los archivos rastreados faltantes.Mientras que la experimentación con formas de gestionar versiones modificadas de forma local de archivos bajo seguimiento sin tener que evitar constantemente compromete accidentales, me encontré con lo siguiente:

git update-index --assume-unchanged my-tracked-file-that-is-awol 

Terminé el desguace de esta idea, pero se olvidó de deshacer el comando, por lo que los cambios posteriores este y otros archivos --assume-sin cambios fueron totalmente ausente:

git status -u --ignored 

me tomó un tiempo para averiguar lo que estaba pasando, pero yo simplemente tenía que revertir el comando con:

git update-index --no-assume-unchanged my-tracked-file-that-is-awol 
Cuestiones relacionadas