Руководство по генератору .gitignore: быстрое создание правил игнорирования по типу проекта
Что такое .gitignore
Файл .gitignore указывает Git, какие файлы/директории не должны находиться под версионным контролем:
node_modules/ ← Игнорировать всю директорию
*.log ← Игнорировать все файлы журналов
.env ← Игнорировать файл переменных окружения
dist/ ← Игнорировать вывод сборки
Нетрекируемые файлы, соответствующие правилам .gitignore, автоматически пропускаются Git. Уже отслеживаемые файлы не затрагиваются.
Правила синтаксиса
Базовые шаблоны
| Синтаксис | Значение | Пример |
|---|---|---|
*.ext |
Совпадение со всеми файлами .ext | *.log |
dir/ |
Совпадение со всей директорией | node_modules/ |
file |
Совпадение с конкретным файлом | .env |
** |
Совпадение с любым уровнем директории | **/test |
? |
Совпадение с одним символом | config?.json |
[abc] |
Совпадение с любым символом в скобках | file[123].txt |
Шаблон отрицания !
*.log ← Игнорировать все журналы
!important.log ← Но сохранить important.log
Шаблоны отрицания должны размещаться после правила игнорирования, которое они отменяют.
Правила путей
/README.md ← Игнорировать только README.md в корне
README.md ← Игнорировать README.md на любом уровне
docs/*.pdf ← Игнорировать PDF в docs/, нерекурсивно
docs/**/*.pdf ← Игнорировать PDF во всех подкаталогах docs/
Распространённые шаблоны проектов
Node.js
node_modules/
dist/
build/
.next/
.env
.env.local
*.log
coverage/
Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
.venv/
venv/
.env
.pytest_cache/
.mypy_cache/
Java / Spring Boot
target/
*.class
*.jar
*.war
.gradle/
.idea/
*.iml
application-local.yml
IDE / Редакторы
# VS Code
.vscode/
# IntelliJ IDEA
.idea/
*.iml
# macOS
.DS_Store
# Windows
Thumbs.db
Использование инструмента gitignore
Шаг 1: Открыть инструмент
Перейдите к инструменту gitignore, чтобы войти в интерфейс генератора.
Шаг 2: Выбрать тип проекта
Отметьте технологии, используемые в вашем проекте:
- ☑ Node.js
- ☑ Python
- ☑ Java
- ☑ Vue / React / Angular
Шаг 3: Выбрать IDE
Отметьте редакторы, используемые вашей командой:
- ☑ VS Code
- ☑ IntelliJ IDEA
- ☑ Другой
Шаг 4: Сгенерировать и скачать
Нажмите «Сгенерировать». Инструмент автоматически объединит все шаблоны, удалит дубликаты и создаст полный файл .gitignore.
Шаг 5: Поместить в корень проекта
Поместите скачанный файл в корень вашего Git-репозитория. Убедитесь, что имя файла — .gitignore (обратите внимание на начальную точку).
Глобальный gitignore
Помимо проектного .gitignore, вы можете настроить глобальные правила игнорирования (применяются ко всем репозиториям):
# Установить файл глобального gitignore
git config --global core.excludesFile ~/.gitignore_global
# Редактировать глобальные правила
vim ~/.gitignore_global
Рекомендуемые глобальные игнорирования:
# Системные файлы
.DS_Store
Thumbs.db
# Конфигурации IDE
.idea/
.vscode/
# Личные инструменты
.todo
Глобальные правила предназначены для файлов личного окружения. Проектные правила — для специфичных файлов проекта.
Обработка уже отслеживаемых файлов
.gitignore влияет только на нетрекируемые файлы. Если файл уже отслеживается Git:
# Прекратить отслеживание, но сохранить локальный файл
git rm --cached .env
# Прекратить отслеживание целой директории
git rm -r --cached node_modules/
# Закоммитить изменение прекращения отслеживания
git commit -m "chore: update gitignore and untrack files"
Флаг
--cachedобеспечивает удаление только из индекса Git без удаления локального файла.
Частые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| Правило не работает | Файл уже отслеживается | Сначала выполните git rm --cached |
| Отрицание не работает | ! размещено перед правилом игнорирования |
Переместите правило ! после соответствующего правила игнорирования |
| Игнорируется слишком много | Шаблон слишком широкий | Используйте / для ограничения области пути |
| Забыли игнорировать .env | Отсутствует шаблон переменных окружения | Всегда добавляйте .env в .gitignore |
| Правила команды несогласованы | Нет унифицированного шаблона | Используйте инструмент для генерации стандартного шаблона |
.gitignore и .gitkeep
После игнорирования директории Git не отслеживает пустые директории. Чтобы сохранить структуру пустых директорий:
logs/ ← .gitignore игнорирует logs
logs/.gitkeep ← .gitkeep как заполнитель, сохраняет директорию
.gitkeep— это не функция Git, а соглашение сообщества. Поместите файл.gitkeepв пустую директорию.
Итоги
.gitignore — основа конфигурации проекта. Правильные правила игнорирования предотвращают коммит конфиденциальной информации и избыточных файлов. Освойте синтаксис, распространённые шаблоны и глобальную конфигурацию, и используйте инструмент gitignore для быстрой генерации — это первый шаг к эффективному версионному контролю.