template - git ignore zip
Git comando para mostrar quĂ© archivos especĂficos son ignorados por.gitignore (8)
Aquí le mostramos cómo imprimir la lista completa de archivos en el árbol de trabajo que coinciden con los patrones ubicados en cualquier lugar en las múltiples fuentes de gitignore de Git (si está utilizando GNU find
):
$ cd {your project directory} /
; find . -path ./.git -prune -o -print /
| git check-ignore --no-index --stdin --verbose
Verificará todos los archivos en la rama actual del repositorio (a menos que los haya eliminado localmente).
E identifica las líneas de origen gitignore particulares, también.
Git continúa rastreando los cambios en algunos archivos que coinciden con los patrones de gitignore, simplemente porque esos archivos ya fueron agregados. De manera útil, el comando anterior también muestra esos archivos.
Si está utilizando Windows, Git Bash incluye GNU find
(según lo revelado por find --version
).
Si la lista es larga (y tiene rev
), también puede mostrarlas por extensión (algo):
$ cd {your project directory} /
; find . -path ./.git -prune -o -print /
| git check-ignore --no-index --stdin --verbose /
| rev | sort | rev
Para obtener más detalles, vea man find
, man git-check-ignore
, man rev
y man sort
.
Me estoy mojando los pies con git y tengo el siguiente problema:
El árbol de origen de mi proyecto:
/
|
+--src/
+----refs/
+----...
|
+--vendor/
+----...
Tengo un código (actualmente MEF) en mi sucursal de proveedor que compilaré allí y luego moveré las referencias a /src/refs
que es desde donde el proyecto las recoge.
Mi problema es que tengo mi .gitignore
configurado para ignorar *.dll
y *.pdb
. Puedo hacer un git add -f bar.dll
para forzar la adición del archivo ignorado que está bien, el problema es que no puedo averiguar qué archivos existen que se ignoran.
Quiero hacer una lista de los archivos ignorados para asegurarme de no olvidar agregarlos.
He leído la página del manual en git ls-files
y no puedo hacer que funcione. Me parece que git ls-files --exclude-standard -i
debería hacer lo que quiero. ¿Qué me estoy perdiendo?
ACTUALIZAR:
git ls-files -i
no funcionará, aparece el error:
ls-files: --ignored needs some exclude pattern
git ls-files --others -i --exclude-from=.git/info/exclude
como VonC sugiere a continuación es la respuesta. La --exclude-standard
también funciona en lugar de --exclude-from
.
Resumen de lo que funciona:
git ls-files --others -i --exclude-from=.git/info/exclude
git ls-files --others -i --exclude-standard
Debe ser suficiente para usar
git ls-files --others -i --exclude-standard
ya que cubre todo lo cubierto por
git ls-files --others -i --exclude-from=.git/info/exclude
por lo tanto este último es redundante.
Puede hacer esto más fácil agregando un alias a su archivo~/.gitconfig
: git config --global alias.ignored "ls-files --others -i --exclude-standard"
Ahora puedes simplemente escribir git ignored
para ver la lista. Mucho más fácil de recordar y más rápido de escribir.
Si prefieres la visualización más concisa de la solución de Jason Geng, puedes agregar un alias para esto así:
git config --global alias.ignored "status --ignored -s"
Sin embargo, la salida más detallada es más útil para solucionar problemas con sus archivos .gitignore, ya que enumera todos los archivos de selección de algodón que se ignoran. Normalmente, canalizará los resultados a través de grep
para ver si un archivo que espera que se ignore está allí, o si un archivo que no quiere que se ignore está ahí.
git ignored | grep some-file-that-isnt-being-ignored-properly
Entonces, cuando solo quieres ver una pantalla corta, es bastante fácil de recordar y escribir
git status --ignored
(Los -s
normalmente se pueden dejar.)
Git ahora tiene esta funcionalidad incorporada
git check-ignore *
Por supuesto, puede cambiar el globo a algo como **/*.dll
en su caso
Hay una forma mucho más sencilla de hacerlo (git 1.7.6+):
git status --ignored
Consulte ¿Hay alguna forma de indicar a git-status que ignore los efectos de los archivos .gitignore?
Notas:
- La answer xiaobai es más simple (git1.7.6 +):
git status --ignored
(como se detalla en " ¿Hay una manera de decirle a git-status que ignore los efectos de los archivos.gitignore
? ") - La answer de MattDiPasquale (para ser upvoted)
git clean -ndX
funciona en gits más antiguos, mostrando una vista previa de los archivos ignorados que podrían eliminarse (sin eliminar nada)
También interesante (mencionado en la answer qwertymk ), también puede usar el comando git check-ignore -v
, al menos en Unix ( no funciona en una sesión de Windows CMD)
git check-ignore *
git check-ignore -v *
El segundo muestra la regla real de .gitignore
que hace que un archivo sea ignorado en su repositorio de git.
En Unix, usando " ¿Qué se expande a todos los archivos en el directorio actual de forma recursiva? " Y un bash4 +:
git check-ignore **/*
(o un comando find -exec
)
Respuesta original 42009)
git ls-files -i
Debería funcionar, salvo que su código fuente indique:
if (show_ignored && !exc_given) {
fprintf(stderr, "%s: --ignored needs some exclude pattern/n",
argv[0]);
exc_given
?
Resulta que se necesita un parámetro más después de -i
para enumerar algo:
Tratar:
git ls-files -i --exclude-from=[Path_To_Your_Global].gitignore
(pero eso solo enumera su objeto en caché (no ignorado), con un filtro, por lo que no es exactamente lo que quiere)
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:/prog/git/test/.git/info>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]
# *~
Asi que....
git ls-files --others --ignored --exclude-from=.git/info/exclude
git ls-files -o -i --exclude-from=.git/info/exclude
git ls-files --others --ignored --exclude-standard
git ls-files -o -i --exclude-standard
debe hacer el truco
Como se mencionó en la página de manual de ls-files , --others
es la parte importante, para mostrarle los archivos que no se han guardado en la memoria caché, que no se han guardado ni se han omitido.
--exclude_standard
no es solo un acceso directo, sino una forma de incluir todas las configuraciones estándar de "patrones ignorados".
exclude-standard
Agregue las exclusiones de git estándar:.git/info/exclude
,.gitignore
en cada directorio y eluser''s global exclusion file
.
Otra opción que está bastante limpia (no hay 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.
Si bien en general la solución correcta no funciona en todas las circunstancias. Supongamos un directorio de repo como este:
# ls **/*
doc/index.html README.txt tmp/dir0/file0 tmp/file1 tmp/file2
doc:
index.html
tmp:
dir0 file1 file2
tmp/dir0:
file0
y un .gitignore como este:
# cat .gitignore
doc
tmp/*
Esto ignora el directorio doc
y todos los archivos debajo de tmp
. Git funciona como se esperaba, pero el comando dado para listar los archivos ignorados no lo hace. Echemos un vistazo a lo que git tiene que decir:
# git ls-files --others --ignored --exclude-standard
tmp/file1
tmp/file2
Observe que falta el doc
en el listado. Lo puedes conseguir con:
# git ls-files --others --ignored --exclude-standard --directory
doc/
Observe la opción --directory
adicional.
Por lo que sé, no hay un solo comando para listar todos los archivos ignorados a la vez. Pero no sé por qué tmp/dir0
no aparece en absoluto.
Suponiendo que haya algunos directorios ignorados, ¿por qué no usar "git status node / logs /" que le dirá qué archivos se agregarán? En el directorio tengo un archivo de texto que no forma parte de la salida de estado, por ejemplo:
En rama maestro
Su sucursal está actualizada con ''origin / master''.
Archivos sin seguimiento:
(use "git add ..." para incluir en lo que se confirmará)
node/logs/.gitignore
.gitignore es:
*
! .gitignore