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