Как исключить папки и файлы из репозитория с помощью файла .gitignore
Когда вы работаете с Git, не все файлы и папки нужно сохранять в репозитории. Некоторые создаются автоматически, содержат временные данные или персональные настройки. Чтобы Git их игнорировал, используется файл .gitignore.
Что это?
.gitignore — это обычный текстовый файл в корне проекта (или в поддиректориях), в котором перечислены шаблоны файлов и папок, которые Git не должен отслеживать.
Разница между tracked и untracked файлами
- Untracked — файлы, которые Git ещё не знает (новые)
- Tracked — файлы, которые уже добавлены в Git (закоммичены или проиндексированы)
Как создать .gitignore
- Откройте терминал в корне вашего проекта
- Выполните команду:
touch .gitignore - Добавьте нужные шаблоны в этот файл
- Не забудьте закоммитить .gitignore:
git add .gitignore git commit -m "Add .gitignore"
Знакомая аналогия
Представьте, что вы упаковываете вещи для переезда. Вам не нужно брать мусор или вещи, которые можно купить на новом месте. .gitignore — это ваш список «оставь это здесь».
Не путать с
.gitkeep— пустой файл, который добавляют в папку, чтобы Git её не удалялgit rm --cached— команда для удаления файлов из индекса Git
С какими концептами связано
- Git — система контроля версий
- Виртуальное окружение (venv) — часто исключается через
.gitignore - Кэш и временные файлы — например,
__pycache__
Как проверить игнорируемые файлы
Простая проверка:
git check-ignore имя_файла
Примеры использования .gitignore
# Виртуальное окружение
venv/
# Кэш Python
__pycache__/
*.py[cod]
# Настройки редактора
.vscode/
.idea/
# Логи в конкретной папке
logs/*.log
# Временные файлы везде
**/*.tmp
# Игнорировать всё, кроме важного файла
*
!important.txt
# Файлы с пробелами в именах
"файл с пробелами.txt"
# Системные файлы macOS
.DS_Store
Важные особенности
.gitignoreработает только для новых (untracked) файлов- Для уже отслеживаемых (tracked) файлов нужно:
git rm --cached имя_файла - Изменения в .gitignore не влияют на уже проиндексированные файлы
- Шаблоны поддерживают:
*.log— все файлы с расширением .loglogs/*.log— только в папке logs**/*.tmp— во всех подпапках!— исключение из правил
Где узнать больше
- Официальная документация Git: https://git-scm.com/docs/gitignore
- Готовые шаблоны: https://github.com/github/gitignore