.gitignore --- Игнорирование файлов
Не всё в папке вашего проекта должно попадать в Git. Артефакты сборки, папки зависимостей, секретные файлы и системный мусор должны оставаться за пределами репозитория. Файл .gitignore указывает Git, какие файлы и директории следует игнорировать.
Как это работает
Создайте файл с именем .gitignore в корне вашего репозитория. Каждая строка --- это шаблон, который Git будет пропускать при отслеживании файлов:
node_modules/
.env
*.log
.DS_Store
Файлы, соответствующие этим шаблонам, не будут отображаться в git status и не будут проиндексированы командой git add ..
Типичные шаблоны
| Шаблон | Что совпадает |
|---|---|
node_modules/ | Вся директория node_modules |
*.log | Любой файл с расширением .log |
.env | Конкретный файл с именем .env |
dist/ | Директория с результатами сборки |
*.tmp | Все временные файлы |
.DS_Store | Метаданные Finder в macOS |
__pycache__/ | Директория кэша Python |
*.o | Скомпилированные объектные файлы |
Правила шаблонов
- Пустые строки игнорируются (используйте их для читаемости)
- Строки, начинающиеся с
#, являются комментариями - Завершающий
/означает «только директория» - Начальный
!инвертирует шаблон (возвращает файл в отслеживание) *совпадает с чем угодно, кроме/**совпадает через директории
Пример с инверсией:
*.log
!important.log
Это игнорирует все файлы .log, кроме important.log.
Попробуйте!
Репозиторий уже инициализирован. Создайте файлы, которые должны быть проигнорированы:
- Создайте файлы для игнорирования:
echo "secret" > .envиecho "debug info" > debug.log - Проверьте статус:
git status(оба файла отображаются как неотслеживаемые) - Создайте файл
.gitignore:echo -e ".env\n*.log" > .gitignore - Проверьте статус снова:
git status(теперь отображается только.gitignore!) - Проиндексируйте и зафиксируйте:
git add .gitignore, затемgit commit -m "Add gitignore file" - Убедитесь, что игнорируемые файлы всё ещё на диске:
ls -a
Файлы по-прежнему находятся в вашей папке --- Git просто делает вид, что их не существует.
Важно: уже отслеживаемые файлы
Если файл уже отслеживается Git (был ранее зафиксирован), добавление его в .gitignore не удалит его. Сначала нужно снять его с отслеживания:
git rm --cached secret.txt
Затем сделайте коммит, и с этого момента .gitignore будет действовать.