Skip to content

Лекція 47. `.gitignore` і цифрова гігієна репозиторію

Лекція 47. .gitignore і цифрова гігієна репозиторію

Section titled “Лекція 47. .gitignore і цифрова гігієна репозиторію”

Рівень 8: Хранитель історії коду

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • зрозуміти, навіщо Git ігнорує частину файлів
  • створити .gitignore
  • не плутати ignore із захистом секретів, які вже потрапили в історію

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про Git із лекцій 43—46, щоб навчитися керувати тим, які файли потрапляють у репозиторій.

Не кожен файл проєкту треба зберігати в Git

Section titled “Не кожен файл проєкту треба зберігати в Git”

Програми створюють кеші, тимчасові файли, локальні налаштування, віртуальні середовища, логи. Вони можуть бути потрібні на твоєму комп’ютері, але не в історії проєкту.

.gitignore містить шаблони шляхів, які Git не повинен пропонувати як нові untracked-файли.

Для простого Python-проєкту можна ігнорувати:

__pycache__/
*.pyc
.venv/
.env

Але правила залежать від проєкту. Не треба копіювати величезний .gitignore, не розуміючи, що він приховує.

gitignore не стирає історію

Section titled “gitignore не стирає історію”

Якщо секрет уже був committed, додавання його імені до .gitignore не видалить секрет із попередніх commits. У реальній ситуації такий секрет треба вважати скомпрометованим, замінити/відкликати й окремо очищати історію за потреби.

Тому головне правило з лекції 42 лишається: секрети не коммітимо.

Папка __pycache__/ містить службові кеш-файли Python і зазвичай не потрібна в навчальному репозиторії.

Файл .env часто використовують для локальних параметрів; якщо там секрети, його не можна commit-ити.

git status --ignored може показати й проігноровані файли, що корисно для перевірки правил.

Git-лабораторія: чистий репозиторій

Section titled “Git-лабораторія: чистий репозиторій”

У навчальному repo:

Terminal window
printf '__pycache__/
*.pyc
.venv/
.env
' > .gitignore
mkdir -p __pycache__
touch __pycache__/fake.pyc
touch .env
git status
git status --ignored
git add .gitignore
git commit -m "Add gitignore for local files"

Файл .env тут порожній і лише навчальний. Не записуй у нього справжні ключі.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. створи .gitignore з лабораторії
  2. перевір git status і git status --ignored
  3. додай власний нешкідливий шаблон, наприклад *.log
  4. створи debug.log і перевір, що Git його ігнорує
  5. поясни, чому .gitignore не врятує секрет, який уже потрапив у старий commit
  • Для чого .gitignore?
  • Чи видаляє він файл із диска?
  • Чи очищає він старі commits?
  • Навіщо ігнорувати __pycache__?
  • Що робити із секретом, який уже був опублікований?
  • .gitignore — файл із шаблонами шляхів, які Git не повинен відстежувати.
  • Untracked file — файл, який бачить система, але Git ще не стежить за ним.
  • __pycache__/ — каталог з кеш-файлами Python; зазвичай не потрібен у репозиторії.
  • .env — файл для локальних параметрів; якщо там секрети — ніколи не коммітимо.
  • git status --ignored — показує й проігноровані файли.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити призначення файлу .gitignore?
  • Чи знаєш ти, що таке untracked files та як їх ігнорувати?
  • Чи розумієш ти, навіщо не включати тимчасові файли до комітів?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • .gitignore тримає службові й локальні файли поза новими commits
  • ignore не є системою секретного зберігання
  • чистий репозиторій легше читати, перевіряти й публікувати

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.