explicar correspondência de padrões gitignore

Eu tenho a seguinte árvore de diretórios:

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

Eu também tenho o seguinte na minha.gitignore:

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

Gostaria que todos os arquivos no diretório images fossem incluídos no repositório. Mas isso não está acontecendo. Eu consegui funcionar usando o seguinte no gitignore:

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

O que esta acontecendo aqui? Existe uma maneira infalível de testar o gitignore. Eu verifiquei odocumentação. Aqui está o ponto que ele não entende (isso está sobformato padrão cabeçalho):

Caso contrário, o Git tratará o padrão como um shell glob adequado para consumo pelo fnmatch (3) com o sinalizador FNM_PATHNAME: os curingas no padrão não corresponderão a / no nome do caminho. Por exemplo, "Documentação / *. Html" corresponde a "Documentação / git.html", mas não "Documentação / ppc / ppc.html" ou "tools / perf / Documentation / perf.html".

questionAnswers(1)

yourAnswerToTheQuestion