Чистый gitignore

.gitignore должен содержать только те файлы, который генерируются на сервере и (возможно) у каждого пользователя. Почему vendor/ должна быть в .gitignore? Потому что vendor генерируется командой composer install и у каждого сервера: на локале, на тесте, деве, проде она будет своя. Почему файлы генерируемые твоей IDE не надо класть в .gitignore? Потому что твоя IDE'шка это сторонний пользователь кодовой базы и проекту не интересно знать какие файлы генерирует твоя IDE внутри этого проекта. Потому что помимо этой IDE существует куча IDE и других программ и операционных систем, которые добавляют свои файлы в проект и ты не хочешь сидеть и учитывать их все

Помещай в .gitignore только те файлы, которые генерируются самим проектом изнутри. Для внешних клиентов, файлов созданных лично тобой существует локальный gitingore: .git/info/exclude. Там самое место для .idea, .vscode, vasyan-quick-test-delete-later.php

Для ОС'ных файлов типа маковского .DS_Store хорошо подходит глобальный gitignore: ~/.gitignore.

project_dir/.gitignore

.env
vendor/

project_dir/.git/info/exclude

.idea/
my-ugly-test-file.c

~/.gitignore

.DS_Store