visual template studio node_modules hub git ignore

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

Referencia de Git


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 el user''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