GIT: cómo enumerar todas las reglas de gitignore en una carpeta

Lo que quiero hacer es enumerar todas gitignore reglas de gitignore dentro de una carpeta. Asum la siguiente estructura de carpetas:

 project/ project/folderA/ 

Ahora si quiero algunas reglas de gitignore para todo mi proyecto, lo pondría en project/.gitignore , pero también podría agregar algunas reglas para project/folderA/.gitignore , que según entiendo, se aplicaría a project/folderA y sus subcarpetas solamente.

Ahora supongamos que tengo algunas reglas en ambos files .gitignore , y estoy en project/folderA , ¿cómo puedo enumerar todas gitignore reglas de gitignore que se aplican aquí? Necesito ver toda la unión de los henetworkingados de las carpetas principales y las existentes en la carpeta actual.

Puede usar el siguiente command:

 git check-ignore * 

que le listría todo directamente debajo de la carpeta actual que se ignora, y si agrega una opción -v , también le mostrará la regla que ha causado que se ignore.

Lo que necesito es no dar un ejemplo y ver si se ignora o no, simplemente necesito ver todas las reglas que se aplican a la carpeta actual.

EDITAR : Algunos sugieren que el file .gitignore en la subcarpeta anula al padre y solo ese file necesita ser verificado. Lo probé con la versión 2.13.3 git y esta no es la forma en que funciona. Si tengo patternA en la carpeta principal, se ignora en la subcarpeta, incluso si no tengo ese mismo patrón en el file .gitignore la subcarpeta.

EDIT 2 : Considere el siguiente ejemplo de trabajo:

 [user@machine tmp]$ mkdir test [user@machine tmp]$ cd test/ [user@machine test]$ git init Initialized empty Git repository in /tmp/test/.git/ [user@machine test]$ echo "a">.gitignore [user@machine test]$ mkdir p [user@machine test]$ cd p [user@machine p]$ echo "b">.gitignore [user@machine p]$ echo "c">.gitignore [user@machine p]$ touch a [user@machine p]$ touch b [user@machine p]$ cd .. [user@machine test]$ touch a [user@machine test]$ touch b [user@machine test]$ git add . [user@machine test]$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitignore new file: b new file: p/.gitignore [user@machine test]$ cd p [user@machine p]$ git list-git-ignore-rules-applied-here <-- hypothetical 

Como puede ver, la única regla en la carpeta principal es a , y las dos reglas en la carpeta p son a y b , por lo tanto, niether de esos files creados son rastreados después de git add . . Ahora la última línea de ese código de ejemplo es lo que necesito, que debería darme el resultado:

 a b c 

Como dice el manual :

"Los patrones en los files de nivel superior (hasta el nivel superior del tree de trabajo) son anulados por aquellos en files de nivel inferior hasta el directory que contiene el file".

De modo que solo se .gitignore un file .gitignore en su subdirectory, por lo que para las reglas aplicadas, solo necesitaría leer un solo file.