.gitignore

какие файлы Git должен игнорировать

Что это

.gitignore — текстовый файл в корне (или в подпапке) Git-репозитория, который перечисляет паттерны файлов и папок, которые не должны попадать в репозиторий. Одна из самых важных вещей в проекте — без него в репу попадают билды, кэши, ключи, IDE-файлы и другой мусор.

Синтаксис

# комментарии начинаются с #

# точные имена
secret.key
config.local.json

# паттерны с шаблоном (glob)
*.log            # все .log файлы
*.tmp
build/           # папка build/ везде
/build/          # только в корне
**/logs/         # папка logs на любом уровне

# отрицание — оставить, даже если попадает в другой паттерн
*.log
!important.log

# пустая строка = разделитель

Что обычно игнорируют

Шаблоны для разных проектов

Готовые шаблоны — репо github/gitignore: github.com/github/gitignore. Есть для Node, Python, Java, Go, Rust, C++, Unity, Godot, VS Code и десятков других.

Пример для Node.js:

node_modules/
npm-debug.log*
yarn-debug.log*
.env
.env.local
dist/
build/
.DS_Store
.vscode/*
!.vscode/settings.json

Уровни игнорирования

  1. .gitignore в репозитории — коммитится, общий для всех
  2. .git/info/exclude — локальный, не коммитится
  3. ~/.gitignore_global — глобальный для юзера. Настраивается: git config --global core.excludesfile ~/.gitignore_global. Идеально для .DS_Store, IDE-файлов

Что если файл уже закоммичен?

.gitignore не действует на уже отслеживаемые файлы. Нужно принудительно удалить из индекса:

git rm --cached secret.key
git commit -m "remove secret.key, now ignored"

Внимание: если засветил секрет — его нужно отозвать. Он останется в истории даже после удаления из последнего коммита.

Полезные утилиты

См. также