Así es como funciona. Un archivo .gitignore es un archivo de texto plano donde cada línea contiene un patrón para que los archivos/directorios sean ignorados. Generalmente, se coloca en la carpeta raíz del repositorio, y eso es lo que recomiendo. Sin embargo, puedes ponerlo en cualquier carpeta del repositorio y también puedes tener múltiples archivos .gitignore. Los patrones de los archivos son relativos a la ubicación de ese archivo .gitignore.
Nombres de archivos literales
El patrón más fácil es un nombre de archivo literal, por ejemplo:
1.DS_Store
Esto ignorará cualquier archivo llamado .DS_Store, que es un archivo común en MacOS.
Directorios
Puedes ignorar directorios enteros, sólo con incluir sus caminos y poner un / en el final:
12node_modules/logs/
Si dejas la barra del final, coincidirá tanto con los archivos como con los directorios con ese nombre.
Comodín
El * coincide con 0 o más caracteres (excepto el /). Así, por ejemplo, *.log coincide con cualquier archivo que termine con la extensión .log.
Otro ejemplo es *~, que coincide con cualquier archivo que termine con ~, como index.html~
También puedes usar el ?, que coincide con cualquier carácter excepto con el /.
Negación
Puedes usar un prefijo de ! para negar un archivo que sería ignorado.
12*.log!ejemplo.log
En este ejemplo, el archivo example.log no se ignora, aunque todos los demás archivos que terminan en .log sí se ignoran.
Pero ten en cuenta que no puedes negar un archivo dentro de un directorio ignorado:
12logs/!logs/ejemplo.log
Por razones de rendimiento, git seguirá ignorando logs/ejemplo.log aquí porque todo el directorio logs es ignorado.
Doble Asterisco
** puede ser usado para coincidir con cualquier número de directorios.
- **/logs coincide con todos los archivos o directorios llamados logs (igual que los logs de patrones)
- **/logs/*.log coincide con todos los archivos que terminan en .log en un directorio de logs
- logs/**/*.log coincide con todos los archivos que terminan en .log en el directorio logs y en cualquiera de sus subdirectorios
** también se puede usar para hacer coincidir todos los archivos dentro de un directorio, así que por ejemplo logs/** coincide con todos los archivos dentro de los logs.
Comentarios
Las líneas que empiezan por # son comentarios:
12# macOS Files.DS_Store