El patrón de doble estrella Gitignore no funciona

Estoy tratando de excluir todos los files excepto los que necesito con la siguiente configuration de .gitignore :

 *.* # Ignore all files *~ # Ignore temp files \#* # Ignore temp files !.gitignore !*.conf !**/*.conf 

Sin embargo, el file ./postgresql/9.3/warm-standby/postgresql.conf no se muestra cuando ejecuto el git status . ¿Cómo puedo arreglar mi .gitignore ?

La versión de Git es 2.1.4

En primer lugar, acnetworkingite a @EtanReisner por investigar cuidadosamente esto y a @RetoAebersold por proporcionar el enlace correcto .

El problema es que con la siguiente statement (que no forma parte de su .gitignore ), .gitignore una list negra en los files y directorys :

 * 

Ahora, si usa *.* Como lo hizo, normalmente eso no es un problema, porque la mayoría de los directorys no contienen un punto ( . ). Sin embargo, el suyo hace:

 * .* postgresql/9.3 

Entonces, lo que ocurre es que todos los directorys están en la list negra. Para habilitar la adición de files en directorys, primero necesita include en la list estos directorys . Puedes hacer esto con el oneliner:

 !*.*/ 

En otras palabras, incluya en la list blanca todo lo que termine con una barra inclinada.

Y ahora también puedes include en la list blanca los files:

 !*.conf 

Tenga en count que la list blanca !**/*.conf no es necesaria (probablemente ni siquiera está permitida, especialmente porque dos asteriscos consecutivos ** solo se activaron en git 1.8. *).

Un mejor file de configuration lee así:

 *.* # Ignore all files *~ # Ignore temp files \#* # Ignore temp files !*/ !*.*/ !.gitignore !*.conf