Agradecemos tu ayuda para difundir nuestros tutoriales sobre las ciencias de la computación.
Solución:
Tener find
(probablemente en UNIX/Linux), puede ejecutar el siguiente comando en la carpeta raíz de su repositorio git:
find . -type f | git check-ignore --stdin
find . -type f
enumerará todos los archivos en la carpeta de forma recursiva, mientras que git check-ignore
enumerará aquellos archivos de la lista, que son efectivamente ignorados por .gitignore
.
los check-ignore
comando es relativamente nuevo. Si tu .git
versión no lo admite ya, puede usar la siguiente solución con un shell compatible con POSIX (como bash, sh, dash, zsh). Se basa en el hecho de que .gitignore
contiene patrones globales que están destinados a ser interpretados por un shell. La solución itera sobre los patrones globales de .gitignore
los expande en el shell y filtra los directorios del mismo:
while read glob ; do
if [ -d "$glob" ] ; then
# Be aware of the fact that even out of an ignored
# folder a file could have been added using git add -f
find "$glob" -type f -exec
bash -c "FILE=;[ $(git status -s $FILE) == "" ] && echo $FILE" ;
else
for file in "$glob" ; do
# Again, be aware of files which add been added using -f
bash -c "FILE=;[ $(git status -s $FILE) == "" ] && echo $FILE" ;
done
fi
# Pipe stderr to /dev/null since .gitignore might contain entries for non
# existing files which would trigger an error message when passing them to find
done < .gitignore 2>/dev/null | sort
My Kung-Fu para enumerar todos los archivos ignorados recursivamente con reglas
find . -type d | grep -v .git | awk 'print $1"/"' | git check-ignore -v --stdin
Hacer esto en una ventana de Windows PowerShell es sencillo:
PS> Get-ChildItem -Recurse | Select-Object Fullname | git check-ignore --stdin -v
La salida se ve un poco rara, como si estuviera diseñada para Cygwin o bash, que no uso, por lo que esta puede ser mi propia configuración incorrecta, pero aún así es muy útil para descubrir por qué se ignora ese archivo.
Comentarios basados en git 2.22.0.windows.1