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