Коротко: 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: Ігри та боти».