Что такое ветки и зачем они нужны
Разбираемся, почему ветки в git «бесплатны» и зачем разработчики создают их десятками.
Ветка (branch) — это лёгкий подвижный указатель на конкретный коммит. Создание ветки почти ничего не стоит.
Зачем нужны ветки
Представьте, что вы пишете новую большую фичу. Она ещё сырая, и сломать рабочую версию проекта нельзя — её используют другие. Решение: создать отдельную ветку, спокойно экспериментировать в ней, а когда фича готова — влить изменения обратно в основную ветку. Если эксперимент провалился, ветку можно просто удалить, и основная версия не пострадает.
Ветки используют для:
- разработки новых функций (feature branches);
- исправления багов отдельно от основной работы;
- экспериментов, которые не жалко выбросить;
- параллельной работы нескольких человек, не мешая друг другу.
Как ветка устроена внутри
Это ключ к пониманию git. Ветка — не «копия файлов», как думают новички, а всего лишь подвижный указатель (по сути — файл с хешем коммита). Когда вы делаете новый коммит, указатель текущей ветки автоматически перемещается на него вперёд.
Поэтому создание ветки мгновенно: git просто записывает ещё один указатель на тот же коммит, не копируя ни одного файла. В тяжёлых старых системах ветка означала дублирование всего проекта — в git это не так.
HEAD — где я сейчас
Есть особый указатель HEAD — он показывает, на какой ветке (и на каком коммите) вы находитесь прямо сейчас. Когда вы переключаетесь на другую ветку, HEAD переезжает вместе с вами, а файлы в рабочей директории меняются на состояние этой ветки.
| Понятие | Что это |
| Коммит | Снимок проекта |
| Ветка | Подвижный указатель на коммит |
| HEAD | Указатель на текущую ветку |
main и develop
В большинстве проектов есть главная ветка — main (раньше её называли master). Это «эталонная» версия, которую стараются держать всегда рабочей. От неё ответвляют рабочие ветки и в неё же вливают готовый код.
Ветки в реальной жизни
Чтобы прочувствовать пользу веток, представьте типичный день разработчика. Вы спокойно пишете новую фичу в своей ветке. Вдруг приходит срочный баг на проде. Вы переключаетесь на свежую ветку от main, чините баг, отправляете фикс — и возвращаетесь к фиче ровно туда, где остановились. Ваша незаконченная работа всё это время была изолирована и никому не мешала. Без веток пришлось бы либо коммитить полусырой код в общую версию, либо рисковать его потерять.
Сколько веток — это нормально
Новички иногда боятся «расплодить» ветки. На деле ветки в git настолько дёшевы, что заводить отдельную ветку под каждую задачу — норма, а не излишество. В активном проекте одновременно могут существовать десятки веток: по одной на каждую фичу, баг и эксперимент. После слияния ненужные ветки удаляют, и список остаётся опрятным. Не экономьте на ветках — это бесплатно.
Итог
- Ветка — лёгкий указатель на коммит, а не копия файлов.
- Создание ветки мгновенно и почти ничего не стоит.
HEADпоказывает, где вы находитесь сейчас.main— главная, всегда рабочая ветка проекта.