gitignore - inclusive or exclusive?

Add everything and ignore what you don't want, or ignore everything and explicitly add what you need.

There are two ways to structure a .gitignore file.

The default approach is that all files can be added, and you specify the files and directories you want to ignore.

For example, if my .gitignore file was this, these two directories would be ignored:

vendor
web

The other approach is to ignore everything and unignore the things to add. For example:

*
!build.yaml
!Dockerfile
!docker-compose.yaml
!web/*/custom

Both approaches work and are regularly used.

Which approach do you prefer and why?

Reply and let me know.