Nuestros mejores programadores han agotado sus depósitos de café, por su búsqueda diariamente por la solución, hasta que Selena encontró la contestación en Gitea por lo tanto hoy la compartimos aquí.
Solución:
Notas:
- La respuesta de xiaobai es más simple (git1.7.6+):
git status --ignored
(como se detalla en “¿Hay alguna manera de decirle a git-status que ignore los efectos de
.gitignore
archivos?”) - La respuesta de MattDiPasquale (para ser votada)
git clean -ndX
funciona en gits más antiguos, mostrando un avance de qué archivos ignorados podrían eliminarse (sin eliminar nada)
También interesante (mencionado en la respuesta de qwertymk), también puede usar el git check-ignore -v
comando, al menos en Unix (no funciona en un CMD ventanas sesión)
git check-ignore *
git check-ignore -v *
El segundo muestra la regla real de la .gitignore
lo que hace que un archivo sea ignorado en su repositorio git.
En Unix, usando “¿Qué se expande recursivamente a todos los archivos en el directorio actual?” y un bash4+:
git check-ignore **/*
(o un find -exec
mando)
Nota: https://stackoverflow.com/users/351947/Rafi B. sugiere en los comentarios a evitar el (arriesgado) globstar:
git check-ignore -v $(find . -type f -print)
Asegúrese de excluir los archivos de la .git/
subcarpeta sin embargo.
Respuesta original 42009)
git ls-files -i
debería funcionar, excepto que su código fuente indica:
if (show_ignored && !exc_given) {
fprintf(stderr, "%s: --ignored needs some exclude patternn",
argv[0]);
exc_given
?
Resulta que necesita un parámetro más después de la -i
para enumerar cualquier cosa:
Tratar:
git ls-files -i --exclude-from=[Path_To_Your_Global].gitignore
(pero eso solo enumeraría su en caché objeto (no ignorado), con un filtro, por lo que no es exactamente lo que desea)
Ejemplo:
$ cat .git/ignore
# ignore objects and archives, anywhere in the tree.
*.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git ls-files --ignored
--exclude='Documentation/*.[0-9]'
--exclude-from=.git/ignore
--exclude-per-directory=.gitignore
En realidad, en mi archivo ‘gitignore’ (llamado ‘excluir’), encuentro una línea de comando que podría ayudarlo:
F:proggittest.gitinfo>type exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
Entonces….
git ls-files --ignored --exclude-from=.git/info/exclude
git ls-files -i --exclude-from=.git/info/exclude
git ls-files --others --ignored --exclude-standard
git ls-files -o -i --exclude-standard
debería hacer el truco.
(Gracias a honzajde señalar en los comentarios que git ls-files -o -i --exclude-from...
lo hace no incluir archivos en caché: solo git ls-files -i --exclude-from...
(sin-o
) lo hace.)
Como se menciona en la página de manual de ls-files, --others
es la parte importante, para mostrarle archivos no almacenados en caché, no comprometidos y normalmente ignorados.
--exclude_standard
no es solo un atajo, sino una forma de incluir todos configuración estándar de “patrones ignorados”.
exclude-standard
Agregue las exclusiones estándar de git:
.git/info/exclude
,.gitignore
en cada directorio, y eluser's global exclusion file
.
Hay una forma mucho más sencilla de hacerlo (git 1.7.6+):
git status --ignored
Consulte ¿Hay alguna manera de decirle a git-status que ignore los efectos de los archivos .gitignore?
Otra opción que es bastante limpia (sin juego de palabras):
git clean -ndX
Explicación:
$ git help clean
git-clean - Remove untracked files from the working tree
-n, --dry-run - Don't actually remove anything, just show what would be done.
-d - Remove untracked directories in addition to untracked files.
-X - Remove only files ignored by Git.
Nota: esta solución no mostrará los archivos ignorados que ya se han eliminado.
Finalizando este artículo puedes encontrar las ilustraciones de otros administradores, tú igualmente tienes el poder insertar el tuyo si lo deseas.