Gitignore как исключить все, кроме папки, и файла с майской?

Для исключения всех файлов и папок, кроме определенной папки и файла с расширением ".майский" (например, "file.майский"), мы можем создать файл .gitignore в корневой папке проекта и добавить следующие строки в него:

# Исключаем все файлы
*
# За исключением .gitignore
!.gitignore
# За исключением папки
!folder/
# За исключением файла с майской
!*.майский
# Исключаем все файлы в папке, кроме файла с майской
folder/*
!folder/*.майский

Комментарии в файле .gitignore помогут нам понять, как именно работают эти правила.

Первая строка * означает, что все файлы в корневой папке проекта должны быть исключены.

Вторая строка !.gitignore отменяет первое правило и включает файл .gitignore.

Третья строка !folder/ отменяет первое правило и включает папку с именем "folder".

Четвертая строка !*.майский отменяет первое правило и включает все файлы с расширением ".майский".

Пятая строка folder/* говорит Git исключить все файлы внутри папки "folder".

Шестая строка !folder/*.майский отменяет предыдущее правило и включает только файлы с расширением ".майский" внутри папки "folder".

Таким образом, с помощью этих правил мы можем указать Git'у, чтобы он игнорировал все файлы и папки, кроме папки "folder" и файлов с майской внутри неё.