Лекція 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-приклади
Section titled “Типові Python-приклади”Для простого Python-проєкту можна ігнорувати:
__pycache__/*.pyc.venv/.envАле правила залежать від проєкту. Не треба копіювати величезний .gitignore, не розуміючи, що він приховує.
gitignore не стирає історію
Section titled “gitignore не стирає історію”Якщо секрет уже був committed, додавання його імені до .gitignore не видалить секрет із попередніх commits. У реальній ситуації такий секрет треба вважати скомпрометованим, замінити/відкликати й окремо очищати історію за потреби.
Тому головне правило з лекції 42 лишається: секрети не коммітимо.
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Папка __pycache__/ містить службові кеш-файли Python і зазвичай не потрібна в навчальному репозиторії.
Приклад 2
Section titled “Приклад 2”Файл .env часто використовують для локальних параметрів; якщо там секрети, його не можна commit-ити.
Приклад 3
Section titled “Приклад 3”git status --ignored може показати й проігноровані файли, що корисно для перевірки правил.
Git-лабораторія: чистий репозиторій
Section titled “Git-лабораторія: чистий репозиторій”У навчальному repo:
printf '__pycache__/*.pyc.venv/.env' > .gitignoremkdir -p __pycache__touch __pycache__/fake.pyctouch .envgit statusgit status --ignoredgit add .gitignoregit commit -m "Add gitignore for local files"Файл .env тут порожній і лише навчальний. Не записуй у нього справжні ключі.
Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- створи
.gitignoreз лабораторії - перевір
git statusіgit status --ignored - додай власний нешкідливий шаблон, наприклад
*.log - створи
debug.logі перевір, що Git його ігнорує - поясни, чому
.gitignoreне врятує секрет, який уже потрапив у старий commit
Перевір себе
Section titled “Перевір себе”- Для чого
.gitignore? - Чи видаляє він файл із диска?
- Чи очищає він старі commits?
- Навіщо ігнорувати
__pycache__? - Що робити із секретом, який уже був опублікований?
Терміни однією фразою
Section titled “Терміни однією фразою”.gitignore— файл із шаблонами шляхів, які Git не повинен відстежувати.- Untracked file — файл, який бачить система, але Git ще не стежить за ним.
__pycache__/— каталог з кеш-файлами Python; зазвичай не потрібен у репозиторії..env— файл для локальних параметрів; якщо там секрети — ніколи не коммітимо.git status --ignored— показує й проігноровані файли.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити призначення файлу
.gitignore? - Чи знаєш ти, що таке untracked files та як їх ігнорувати?
- Чи розумієш ти, навіщо не включати тимчасові файли до комітів?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”.gitignoreтримає службові й локальні файли поза новими commits- ignore не є системою секретного зберігання
- чистий репозиторій легше читати, перевіряти й публікувати
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.