📝 Git и GitHub

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

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
06.05.2026
⏱️
Время чтения
4 мин
👁️
Просмотров
49
🌱
Уровень
Начальный
🐦 💼 ✈️

.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

Глобальный .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. Спите спокойно! 😴

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Платформы хостинга Git: полное сравнение 🏆

GitHub, GitLab, Bitbucket — какую выбрать? Полное сравнение с актуальными данными.

📅 06.05.2026 👁️ 55
📝

Что такое Git Commit и зачем он нужен? 📸

Коммит — это сохранённый снимок вашего проекта в определённый момент времени, как сохранение в видеоигре!

📅 06.05.2026 👁️ 57
📝

Почему Git победил другие системы контроля версий…

Сегодня Git — это стандарт де-факто для контроля версий в разработке программного обеспечения. Но так...

📅 06.05.2026 👁️ 53

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!