junior
Что такое .gitignore и как его правильно настроить?
.gitignore — это файл конфигурации Git, в котором указываются шаблоны (patterns) файлов и директорий, которые Git должен игнорировать и не включать в систему контроля версий.
Синтаксис шаблонов
Пример
# Комментарий
# Игнорировать конкретный файл
secret.properties
# Игнорировать все файлы с расширением
*.class
*.jar
*.log
# Игнорировать директорию
target/
build/
out/
# Игнорировать файлы в любой вложенной директории
**/logs/
# Отрицание — НЕ игнорировать файл (исключение из правила)
!important.log
# Игнорировать файл только в корне репозитория
/config.properties
# Wildcard — один символ
?.txt
# Игнорировать все в директории, кроме определённого файла
logs/*
!logs/.gitkeep
Типичный .gitignore для Java-проекта
Развернуть пример .gitignore
# Compiled class files
*.class
# Build directories
target/
build/
out/
# IDE — IntelliJ IDEA
.idea/
*.iml
# IDE — Eclipse
.classpath
.project
.settings/
# IDE — VS Code
.vscode/
# Maven
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
# Gradle
.gradle/
gradle-app.setting
!gradle-wrapper.jar
# Logs
*.log
# OS files
.DS_Store
Thumbs.db
# Environment and secrets
.env
*.properties.local
application-local.yml
# Package files
*.war
*.ear
Глобальный .gitignore
Пример
# Создать глобальный файл игнорирования (для всех репозиториев)
git config --global core.excludesfile ~/.gitignore_global
# Содержимое ~/.gitignore_global (для IDE и OS):
# .idea/
# .DS_Store
# Thumbs.db
# *.swp
Игнорирование уже отслеживаемого файла
Пример
# Если файл уже был закоммичен, .gitignore на него не действует
# Нужно удалить из отслеживания:
git rm --cached src/main/resources/secret.properties
# Файл останется на диске, но перестанет отслеживаться
# Для директории:
git rm -r --cached target/
Ключевые моменты
.gitignoreработает только для неотслеживаемых файлов. Если файл уже добавлен в Git, его нужно удалить черезgit rm --cached- Файл
.gitignoreразмещается в корне репозитория, но может быть и в поддиректориях (действует на эту директорию и ниже) - Для IDE-специфичных файлов лучше использовать глобальный
.gitignore, а не добавлять их в проектный - Пустые директории не отслеживаются Git — для сохранения структуры добавляют файл-заглушку
.gitkeep
Частые ошибки
- Забыть добавить
.gitignoreв начале проекта — потом приходится удалять файлы из отслеживания - Коммитить секреты (
.env, ключи, пароли) — даже после удаления файла он остаётся в истории Git - Забывать про
git rm --cached— добавление в.gitignoreуже отслеживаемого файла не имеет эффекта - Игнорировать
gradle-wrapper.jar— он должен быть в репозитории для сборки без установленного Gradle
Как используется в 2026
- GitHub/GitLab предлагают готовые шаблоны
.gitignoreпри создании репозитория (Java, Maven, Gradle и т.д.) - Сервис gitignore.io генерирует
.gitignoreпо набору технологий - Инструменты Secret Scanning в GitHub/GitLab автоматически обнаруживают случайно закоммиченные секреты
git-secretsиpre-commitхуки предотвращают коммит секретов
На собеседовании: ключевой момент, который часто упускают:
.gitignoreне действует на уже отслеживаемые файлы — нуженgit rm --cached. Покажите знание синтаксиса:*,**,!(отрицание),/(только корень). Упомяните разницу между глобальным и проектным.gitignore.