Коротко: Git зберігає історію змін коду, GitHub — робить її доступною з будь-якого комп'ютера й показує роботи іншим. Для підлітка це ще й портфоліо: посилання, яке можна відкрити й подивитися.
Git — це система, яка запам'ятовує історію змін коду. У програмі курсу Python вона з'являється на ступені «Ігри та боти» для 10–14 років, після Pygame і Telegram-ботів: контроль версій, commit, push, pull request і публікація першого репозиторію.
Питання «навіщо це дитині» виникає закономірно. Відповідь простіша, ніж здається: без Git проєкт живе тільки на одному комп'ютері й тільки в одному стані.
Проблема, яку Git вирішує
Кожен, хто щось робив на комп'ютері, знає папку з файлами «гра», «гра2», «гра_фінал», «гра_фінал_справжній». Це ручний контроль версій — незручний і ненадійний.
Git робить те саме, але системно: зберігає кожен збережений стан, показує, що змінилося між ними, і дозволяє повернутися до будь-якого. Для дитини це про свободу експериментувати. Зламати робочий код перестає бути страшно, бо повернути його — одна команда.
Що конкретно робить дитина на цій темі
commit — зберегти поточний стан із поясненням, що саме зроблено. Тут з'являється навичка, корисна далеко за межами коду: коротко описати власну зміну.
push — відправити роботу на GitHub, щоб вона існувала не тільки на домашньому ноутбуку.
pull request — запропонувати зміну й показати її іншим до того, як вона потрапить у загальний код. Це вже про командну роботу, і саме так влаштована більшість реальних проєктів.
На старшому ступені тема поглиблюється: гілки, деплой на Railway або Render, змінні оточення.
Три команди, з яких усе починається
Git виглядає страшно рівно доти, доки не з'ясується, що щоденна робота тримається на трьох діях.
add — відкласти вбік те, що хочеш зберегти. commit — зберегти з підписом: що саме змінив. push — відправити збережене на GitHub, щоб воно лежало не тільки на твоєму ноутбуці.
Усе інше — гілки, злиття, відкат — з'являється пізніше й лише тоді, коли в ньому виникає потреба. Підліток, який два місяці робив тільки ці три дії, вже отримав головне: історію своєї роботи, з якої можна відкотитися.
Окремо ми наполягаємо на підписах до комітів. «Змінив» і «фікс» нічого не означають через тиждень. «Додав перевірку введення» — означають. Це не педантизм: перший же відкат показує, навіщо підпис потрібен, і після цього переконувати нікого не треба.
Помилка, яку робить майже кожен
Вона одна і та сама: разом із кодом у репозиторій їде те, чого там бути не повинно. Ключ доступу до бота. Пароль до бази. Файл на сто мегабайтів, який просто лежав у папці.
Лікує це .gitignore — список того, що Git ігнорує. Ми заводимо його на першому ж занятті теми, до першого коміту, а не після. Причина проста: видалити файл із історії складніше, ніж не покласти його туди. А ключ, який хоч раз побував у публічному репозиторії, вважається скомпрометованим, навіть якщо його звідти прибрали.
Чому це важливіше, ніж здається
Репозиторій — це те, що показують замість слів «я вмію програмувати». У ньому видно код, історію роботи й те, як людина її описує. Порівняно з цим сертифікат говорить мало.
Другий, менш очевидний ефект — проєкт перестає бути одноразовим. Гра на Pygame або бот, викладені на GitHub, залишаються з дитиною: до них можна повернутися через рік, доробити, показати на співбесіді або в університеті.
Чи не складно це для 10–12 років?
Базовий набір — три команди, і вони вивчаються за кілька занять. Складність Git починається у великих командах із заплутаною історією гілок, а на курсі до цього не доходить.
Чи безпечно публікувати код дитини у відкритому доступі?
У публічний репозиторій кладуть код проєкту, а не особисті дані. Окремо в програмі є тема про змінні оточення — саме тому, що ключі й паролі в код не записують ніколи.
Чи знадобиться Git, якщо дитина не стане програмістом?
Прямо — навряд. Побічно — так: звичка фіксувати проміжні стани роботи й пояснювати, що змінив, працює в будь-якій справі, де є чернетки.
А чому не хмара замість Git
Питання розумне: папка в хмарі теж синхронізується й теж зберігає версії. Різниця в тому, що вона зберігає їх за тебе й на свій розсуд — за часом. Git зберігає тоді, коли ти сказав, і рівно те, що ти вибрав.
Практично це виглядає так. У хмарі підліток бачить «файл змінено о 17:42» і не пам'ятає, що саме там було. У Git він бачить «додав підрахунок очок» і точно знає, до якого стану повертається. Коли проєкт складається з десяти файлів і зміна зачіпає три з них одночасно, різниця перестає бути теоретичною.
Що з цього видно батькам
Після теми в дитини з'являється публічна сторінка з її роботами. Не скріншот і не архів, а адреса, яку можна відкрити з телефона: список проєктів, дати, код усередині.
Там же видно календар активності — сітка квадратиків, де кожен день із комітом підсвічений. Штука нехитра, але на підлітків діє: пропущений тиждень у ній помітний, і багато хто починає дописувати щось між заняттями просто щоб не рвати ланцюжок.
Для вступу чи стажування ця сторінка важить більше за будь-який сертифікат, тому що показує не факт відвідування курсу, а сам код і те, як він змінювався. Сертифікат ми теж видаємо, але як приємне доповнення, а не як головний доказ.
Чи можна зіпсувати щось назавжди
Практично ні, і це та властивість, заради якої Git і придумали. Видалений файл повертається, невдала зміна відкочується, вчорашній стан дістається однією командою. Єдине, що справді втрачається безповоротно, — те, що жодного разу не було закомічено.
Тому перше правило теми звучить приземлено: коміть частіше, ніж здається потрібним. Підліток, який зберігається раз на тиждень, ризикує тижнем роботи; той, хто робить це після кожного робочого шматка, не ризикує нічим.
Гілки й pull request — це вже старший ступінь
У середньому рівні ми свідомо зупиняємося на трьох командах. Гілки з'являються в Python Pro, і там у них є сенс: коли проєкт великий, зручно пробувати ідею окремо від робочої версії, а потім вливати її назад через pull request.
Тоді ж підліток уперше бачить конфлікт злиття — момент, коли два варіанти одного файла не сходяться й вибирати доводиться руками. Виглядає це неприємно, але саме тут стає зрозуміло, навіщо взагалі потрібні коміти з осмисленими підписами.
Там само йде деплой: проєкт виїжджає на хостинг просто з репозиторію, а ключі переїжджають у змінні оточення. Кільце замикається — те, що починалося як спосіб не загубити файл, стає способом опублікувати робочий сервіс.
Де це стоїть у програмі
Тема Git завершує ступінь «Ігри та боти» — після неї йде фінальний проєкт, який одразу публікується в репозиторії. Тобто інструмент вивчають не в порожнечі, а тоді, коли вже є що зберігати.
Що саме кладуть у портфоліо на старшому ступені, розібрано окремо: портфоліо до 18 років. Повна програма середнього ступеня — на сторінці курсу «Python: Ігри та боти».