1. Исключите локальные значения, сохраните пример
Поместите правила в корневой .gitignore. Они охватывают .env и корневые файлы с началом .env., затем возвращают .env.example. Они не охватывают service.env и вложенные каталоги.
Проверьте .env.example перед коммитом: имя примера не гарантирует безопасность значений. Используйте заполнители и опишите обязательные переменные.
/.env
/.env.*
!/.env.example 2. Проверьте все три случая
При наличии неотслеживаемых .env, .env.local и .env.example проверьте совпадающие правила:
git check-ignore -v -- .env .env.local .env.example!/.env.example означает возврат примера. Статус должен показать его, но не два файла локальных значений. Исключённый родитель или более позднее правило могут изменить результат.
git status --short --untracked-files=all -- .env .env.local .env.example 3. Обработайте ранее отслеживаемые значения
Проверьте, отслеживает ли Git один из файлов локальных значений:
git ls-files -- .env .env.localЕсли пути появились, следуйте статье об отслеживаемых файлах и согласуйте изменения. .gitignore не удаляет старые коммиты. При утечке сначала отзовите или замените учётные данные, затем следуйте рекомендациям GitHub: удаление текущего файла не стирает историю.
Точное поведение и подробности описаны в официальных источниках: Документация Git · Частые вопросы о Git · Рекомендации GitHub при утечке конфиденциальных данных