explicar la coincidencia de patrones de gitignore

Tengo el siguiente árbol de directorios:

> #pwd is the repo   
> tree -a
.
├── .git
│   |.....
├── .gitignore
├── README.md
├── f1.html
├── f2.html ... and some more html
├── images
│   └── river.jpg
>

También tengo lo siguiente en mi.gitignore:

> cat .gitignore
*
!*.html
!images/*.*
>

Me gustaría que todos los archivos en el directorio de imágenes se incluyan en el repositorio. Pero eso no está sucediendo. Lo hice funcionar usando lo siguiente en gitignore:

*
!*.html
!images*
!*.jp*g

¿Que está sucediendo aquí? ¿Hay alguna manera infalible de probar gitignore? Revisé eldocumentación. Aquí está el punto que no entiende (esto está debajoformato de patrón título):

De lo contrario, Git trata el patrón como un globo de shell adecuado para el consumo de fnmatch (3) con el indicador FNM_PATHNAME: los comodines en el patrón no coincidirán con / en el nombre de ruta. Por ejemplo, "Documentation / *. Html" coincide con "Documentation / git.html" pero no con "Documentation / ppc / ppc.html" o "tools / perf / Documentation / perf.html".

Respuestas a la pregunta(1)

Su respuesta a la pregunta