📝 Python

Полный гид по .gitignore 🚫

0
Author
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Published
06.05.2026
⏱️
Reading time
4 min
👁️
Views
23
🌱
Level
Beginner

.gitignore — специальный файл который говорит Git какие файлы НЕ отслеживать.

Зачем нужен .gitignore?

Проблема без .gitignore

git add .
git commit -m "update"

# Закоммитили:
# - node_modules/ (200 MB!)
# - .env (с паролями от БД!)
# - *.log (логи на 50 MB)
# - .DS_Store (мусор macOS)

Последствия:
- Репозиторий раздут до гигабайтов
- Пароли утекли в публичный GitHub
- Clone репозитория занимает 10 минут
- Команда ругается

Решение — .gitignore

# .gitignore
node_modules/
.env
*.log
.DS_Store

Результат:
- Git игнорирует эти файлы
- Репозиторий лёгкий и чистый
- Секреты в безопасности

Что НЕ коммитить?

1. Зависимости (dependencies)

# Node.js
node_modules/

# Python
__pycache__/
*.pyc
.venv/
venv/

# Ruby
vendor/bundle/

# PHP
vendor/

Почему: Они устанавливаются через npm install / pip install

2. Секреты и пароли 🔐

.env
.env.local
secrets.yml
config/database.yml
*.pem
*.key

НИКОГДА не коммитьте:
- API ключи
- Пароли от БД
- Секретные токены
- SSH ключи
- Сертификаты

3. Скомпилированный код и сборка

dist/
build/
*.exe
*.dll
*.so
*.o
*.class
*.pyc

4. Логи и временные файлы

*.log
*.tmp
*.swp
*~
npm-debug.log*

5. Системные файлы ОС

# macOS
.DS_Store
.AppleDouble

# Windows
Thumbs.db
desktop.ini

# Linux
*~
.directory

6. IDE конфиги

.vscode/
.idea/
*.sublime-project
*.sublime-workspace
.project

7 Базы данных (локальные)

*.sqlite
*.sqlite3
*.db

Как создать .gitignore?

Способ 1: Вручную

# В корне проекта:
touch .gitignore

# Откройте в редакторе и добавьте:
node_modules/
.env
*.log

Способ 2: GitHub шаблоны

При создании репозитория выберите шаблон:
- Python
- Node
- Java
- и др.

Способ 3: gitignore.io

Сайт https://gitignore.io генерирует .gitignore

# Пример для Python + Django + VSCode:
curl https://www.toptal.com/developers/gitignore/api/python,django,vscode > .gitignore

Синтаксис .gitignore

Базовые правила

# Игнорировать файл
secret.txt

# Игнорировать папку
logs/

# Игнорировать все с расширением
*.log

# Игнорировать в любом месте
**/temp.txt

# НЕ игнорировать (исключение)
!important.log

Примеры паттернов

# Один конкретный файл
config.json

# Все .txt файлы
*.txt

# Все .txt в корне (не в подпапках)
/*.txt

# build папка везде
**/build/

# Игнорировать все кроме важного
*
!src/
!README.md

Комментарии

# Это комментарий

# Зависимости
node_modules/
vendor/

# Секреты
.env  # файл с паролями

Шаблоны по языкам

Python

# Byte-compiled
__pycache__/
*.py[cod]
*$py.class

# Distribution
dist/
build/
*.egg-info/

# Virtual environment
venv/
ENV/
.venv/

# Django
*.log
db.sqlite3
media/
staticfiles/

# Flask
instance/
.webassets-cache

# Environment
.env

Node.js / JavaScript

# Dependencies
node_modules/
package-lock.json  # опционально

# Build
dist/
build/
.next/
out/

# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Environment
.env
.env.local
.env.*.local

# Testing
coverage/
.nyc_output/

Java

# Compiled
*.class
*.jar
*.war
*.ear

# Build
target/
build/
out/

# IDE
.idea/
*.iml
.project
.settings/

# Logs
hs_err_pid*

.gitignore для всех проектов

# Универсальный .gitignore

# Зависимости
node_modules/
__pycache__/
vendor/

# Секреты
.env
.env.local
secrets.*

# Сборка
dist/
build/
*.exe
*.dll

# Логи
*.log

# OS
.DS_Store
Thumbs.db
*~

# IDE
.vscode/
.idea/
*.swp

# Временные
*.tmp
*.cache

Что делать если уже закоммитили?

Файл уже в Git

# 1. Добавьте в .gitignore
echo "node_modules/" >> .gitignore

# 2. Удалите из Git (но не с диска!)
git rm --cached node_modules/ -r

# 3. Закоммитьте
git commit -m "chore: remove node_modules from tracking"

# 4. Push
git push

--cached = удалить из Git, но НЕ с диска!

Секрет попал в Git 🚨

НЕМЕДЛЕННО:

  1. Смените пароль/ключ!
  2. Удалите из Git истории:
    bash git filter-branch --tree-filter 'rm -f .env' HEAD git push --force

  3. Используйте BFG Repo-Cleaner для больших файлов

Важно: Старые коммиты могут сохраниться в forks!

Глобальный .gitignore

Для всех ваших проектов:

# Создайте глобальный
touch ~/.gitignore_global

# Добавьте в него:
.DS_Store
.vscode/
*.swp

# Скажите Git использовать:
git config --global core.excludesfile ~/.gitignore_global

Теперь эти файлы игнорируются во ВСЕХ проектах!

Проверка .gitignore

Проверить игнорируется ли файл

git check-ignore -v node_modules/
# .gitignore:1:node_modules/ node_modules/

Посмотреть все игнорируемые

git status --ignored

Debug почему файл игнорируется

git check-ignore -v -n путь/к/файлу

Частые ошибки

Забыли / в конце

node_modules  # игнорирует файл "node_modules"
node_modules/ # игнорирует папку "node_modules/"

Пробелы в начале/конце

 .env   # НЕ сработает (пробел в начале)
.env    # Правильно

Кодировка файла
- .gitignore должен быть в UTF-8
- Без BOM

Best Practices

DO:
- Создавайте .gitignore в начале проекта
- Коммитьте .gitignore в репозиторий
- Используйте готовые шаблоны
- Документируйте комментариями

DON’T:
- Не игнорируйте .gitignore сам!
- Не игнорируйте критичные конфиги

Заключение

.gitignore — это:
- 🛡️ Защита от случайных коммитов
- 🗜️ Лёгкий репозиторий
- 🔐 Безопасность секретов
- 📝 Чистая история

Создайте .gitignore СЕЙЧАС:
1. Скопируйте шаблон для вашего языка
2. Добавьте .env и другие секреты
3. Закоммитьте
4. Спите спокойно! 😴

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

Модуль datetime: работа с датами и временем

datetime — стандартный модуль Python для работы с датами и временем. Входит в стандартную библиотеку,...

📅 08.05.2026 👁️ 30
📝

.env файлы и переменные окружения: секреты вне ко…

Представь что ты написал программу с API-ключом прямо в коде и залил её на GitHub....

📅 08.05.2026 👁️ 35
📝

Виртуальные окружения в Python: зачем и как

Когда начинаешь второй Python-проект и ставишь pip install requests — эта библиотека устанавливается глобально, для...

📅 08.05.2026 👁️ 31

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!