Урок 02 · Одно понятие
Весь урок — про одно слово. Разберём его на конкретной ситуации: два агента, одно приложение, никто никому не мешает.
Зачем это в твоей миссии
Ветка — это тот самый механизм, который позволяет двум агентам работать над твоим приложением одновременно и не затирать работу друг друга. Всё остальное — worktrees, PR, слияния — надстройки над ней. Если ветка понятна, дальше пойдёт легко.
Само слово «ветка» мало что объясняет, поэтому определение отложим на конец урока. Сначала — живая ситуация, из которой оно вырастет само.
Представь: у тебя есть небольшой интернет-магазин. Три файла, два коммита позади. И две задачи, которые хочется делать одновременно:
Ты хочешь посадить на них двух агентов. Пройди историю по шагам и смотри сразу на две вещи: что происходит с историей слева и что лежит у тебя в папке справа. Вторая половина — самая важная.
После того как ты это увидел, определение читается уже без напряжения:
«Ветка в Git — это просто легковесный подвижный указатель на один из этих коммитов».
Разберём эту фразу по частям, каждую — на том, что ты только что видел.
| Слово | Что оно значит на нашем примере |
|---|---|
| указатель | Бирка feature/pay не содержит кода. Она содержит одно: айди снимка «c». Всё. |
| подвижный | На шаге 3 агент сделал коммит — и бирка сама переехала с «b» на «c». Никто её не двигал руками. |
| легковесный | Имя плюс айди — это около сорока байт. Поэтому на шаге 5 вторая ветка создалась мгновенно и ничего не заняла. |
| на коммит | Ветка всегда приклеена к конкретному снимку. Не к папке, не к диапазону изменений — к одной точке в истории. |
Два факта, из которых следует всё остальное
Первый: ветка — это имя, приклеенное к одному снимку, и она едет за твоими коммитами.
Второй: переключение ветки перекладывает содержимое папки под тот снимок, к которому она приклеена.
В скрытой папке .git внутри твоего проекта. Там хранятся все снимки всех веток одновременно — просто на витрину, то есть в видимую часть папки, Git выкладывает только один из них. Ничего не «уходит» и не «прячется на сервер»: всё лежит у тебя на диске, в паре сантиметров от того места, куда ты смотришь.
Закоммиченную — практически нет, и это главная причина приучить агента коммитить часто. Пока работа лежит в снимке, к ней всегда можно вернуться. А вот не закоммиченные правки — те, что агент только что написал и ещё не сохранил снимком — при переключении действительно могут мешать: Git либо утащит их за собой в другую ветку, либо откажется переключаться. Поэтому первое, что стоит требовать от агента: сначала коммит, потом всё остальное.
Отличный вопрос, и ты нащупал ровно то место, где обычно спотыкаются. В нашей истории агенты работали по очереди: ты переключался между ветками и передавал папку то одному, то другому. Для настоящей одновременности нужно, чтобы у каждого агента была своя папка — и именно для этого существуют worktrees. Это тема отдельного урока, но теперь понятно, какую проблему они решают: ветки разводят историю, worktrees разводят папки.
Можно — пока задача одна и она удалась. Ветка окупается в трёх ситуациях: когда работа может не получиться и нужен путь назад; когда параллельно идёт что-то ещё; когда результат надо показать до того, как он попадёт в рабочую версию. У тебя с агентами регулярно случаются все три сразу.
Старт работы
Создай ветку feature/pay от main и работай только в ней. Коммить каждый законченный кусок, а не всё в конце.
«От main» — важное уточнение: агент стартует с чистой рабочей версии, а не поверх чьих-то недоделок. Частые коммиты — твои точки возврата.
Проверить, где ты
На какой ветке я сейчас и есть ли незакоммиченные изменения?
Два вопроса, которые снимают девяносто процентов путаницы. Задавай их перед любым переключением.
Не понравился результат
Оставь ветку feature/pay как есть, переключись на main и покажи, что там сейчас.
Ничего не удаляем и не откатываем. Просто уходим на рабочую версию — а неудачная попытка остаётся лежать в своём снимке на случай, если из неё что-то пригодится.
Про имена веток
Имена вроде feature/pay или fix/cart — просто соглашение, Git на слэш никак не реагирует. Но привычка называть ветки осмысленно окупается уже на третьей: через неделю ты не вспомнишь, что было в ветке test2.
Теперь, когда история пройдена, вот свободная песочница. Никакого сценария, ничего не сломать. Внизу пишется команда, которую ты по сути отдал.
Вопросы не про определения, а про ситуации — «что будет, если». Именно так это понадобится в работе.