Короткий ответ
.gitignore указывает Git, какие файлы и папки не отслеживать и не предлагать к коммиту (временные файлы, артефакты сборки, локальные .env); если секрет уже попал в историю, добавления в .gitignore недостаточно — нужно считать секрет скомпрометированным, немедленно его отозвать/перевыпустить и затем очистить историю репозитория.
Как это работает подробнее
.gitignore действует только на файлы, которые Git ещё не отслеживает; он не удаляет из истории файлы, уже закоммиченные ранее, и не защищает текущий рабочий каталог от случайного git add -A.
Пример кода
example-475.txt
.env
*.pem
__pycache__/
node_modules/
*.logЧто использовать на практике
- Рекомендация. для уже закоммиченного секрета правильная последовательность — сначала отозвать/ротировать сам секрет (токен, пароль, ключ) в системе, которая его выдала, потому что он уже мог "утечь" и в чужие форки, и в CI-логи; затем перезаписать историю через
git filter-repoили BFG Repo-Cleaner и форсированно запушить; затем попросить всех участников клонировать репозиторий заново.
Подводные камни
- Ошибка. считать, что
git rm file && git commitудаляет секрет — файл остаётся в старых коммитах и доступен черезgit log/git show; добавлять секретный файл в.gitignoreпостфактум без ротации самого секрета; не уведомлять команду о необходимости пересоздать локальные клоны после переписывания истории.