tag - Archivos sin seguimiento que no se muestran en el estado de git
git push (6)
¿Tiene un subdirectorio .git
dentro de su directorio sub_fldr
? Git puede pensar que estás tratando de usar submodules .
Tengo un proyecto con la siguiente estructura de carpetas:
Todos los archivos del proyecto están en la 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 git status 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 que si agrego un nuevo archivo dentro de base_fldr / sub_fldr / entonces el estado de git no muestra el archivo como sin seguimiento. Ni siquiera dará ninguna 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!
Aquí hay otra causa del comportamiento descrito en esta pregunta (la lista de archivos sin seguimiento de estado de git no incluye un archivo sin seguimiento en una subcarpeta). Si el archivo no se rastrea debido a un archivo .gitignore en la subcarpeta, entonces el archivo no se incluirá en la lista de archivos sin seguimiento de estado de git.
Esto es probable porque su directorio base_fldr / sub_fldr / no está rastreado, si ejecuta:
git add base_fldr/sub_fldr/
Desde su raíz de copia de trabajo, también agregará automáticamente el directorio y otros archivos y directorios dentro de ese directorio.
De forma predeterminada, git no mostrará los archivos dentro de los directorios que no están rastreados.
Me di cuenta de lo que iba mal. Básicamente, la primera línea en mi archivo .gitignore es "* /". Esto hace que cualquier archivo agregado al subdirectorio sea ignorado por el comando git status. Pero lo curioso fue que si modificaba los archivos en la subcarpeta, el estado de git los muestra correctamente, ya que el archivo ya está en el repositorio de git, pero estaba ignorando los archivos nuevos en la subcarpeta.
Solucioné mi problema eliminando 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 ignorara cualquier archivo generado en las subcarpetas.
Gracias a todos por las respuestas.
Me encontré con un problema similar con la falta de archivos rastreados. Mientras experimentaba formas de administrar versiones modificadas localmente de archivos rastreados sin tener que evitar constantemente confirmaciones accidentales, ejecuté lo siguiente:
git update-index --assume-unchanged my-tracked-file-that-is-awol
Terminé desechando esta idea, pero se me olvidó deshacer el comando, por lo que los cambios subsiguientes a este y otros archivos --asumos sin cambios faltaban completamente en:
git status -u --ignored
Me tomó un tiempo averiguar qué estaba pasando, pero simplemente tuve que revertir el comando con:
git update-index --no-assume-unchanged my-tracked-file-that-is-awol
Para depurar un problema como este, vea si su archivo .gitignore
es el culpable observando las siguientes dos salidas
Ver https://git-scm.com/docs/git-ls-files
-
git ls-files --other --directory --exclude-standard
Esto mostrará todos los archivos sin .gitignore
, mientras obedece el archivo .gitignore
.
git ls-files --other --directory
Esto mostrará todos los archivos sin .gitignore
, sin obedecer el archivo .gitignore
.
Los archivos que están presentes en la salida de 2
, pero no están presentes en la salida de 1
, no se muestran sin seguimiento debido a algún indicador en su archivo .gitignore