Что такое ветки и зачем они нужны
Представь, что ты пишешь новую фичу и хочешь поэкспериментировать — но не хочешь сломать то, что уже работает. Вот для этого существуют ветки.
Ветка — это просто указатель
Технически ветка в Git — это файл из 41 байта. В нём хранится хеш последнего коммита ветки. Всё.
.git/refs/heads/main → "a1b2c3d4e5f6..."
.git/refs/heads/feature → "7g8h9i0j1k2l..."
Когда ты делаешь новый коммит, Git:
- Создаёт объект коммита с хешем
- Обновляет файл текущей ветки — записывает туда новый хеш
Создать ветку стоит почти ноль — нет копирования файлов, нет дубликатов. Просто новый указатель.
HEAD — где ты сейчас
HEAD — это специальный указатель, который всегда знает, в какой ветке (или коммите) ты находишься.
HEAD → main → a1b2c3
Когда ты переключаешься на ветку, HEAD меняется. Новые коммиты двигают HEAD и текущую ветку вместе.
Попробуй сам
В симуляции ниже — полный цикл работы с ветками. Наблюдай, как HEAD переходит между ветками, как коммиты расходятся и потом сливаются.
Основные команды
git branch # список всех веток (текущая помечена *)
git branch feature # создать ветку feature
git switch feature # переключиться на feature
git switch -c feature # создать и сразу переключиться (короче)
git branch -d feature # удалить ветку (после merge)
git switch— современная заменаgit checkout. Checkout делает слишком много вещей. Switch — только переключает ветки. Используй switch в новых проектах.
Зачем вообще ветки?
Изоляция работы. Ты пишешь новую фичу в отдельной ветке. Если что-то пошло не так — просто удаляешь ветку. Main нетронут.
Параллельная разработка. Несколько разработчиков могут работать над разными задачами одновременно, не мешая друг другу.
Code Review. В GitHub/GitLab принято создавать Pull Request из ветки в main. Коллеги смотрят diff, оставляют комментарии — и только потом ветка вливается.
Эксперименты. Хочешь попробовать другой подход? Создай ветку experiment, сломай всё что нужно. Если не понравится — удали и вернись на main.
Как это выглядит в реальном проекте
# Начинаешь новую задачу
git switch main
git pull # берём последнее с сервера
git switch -c feature/user-auth # создаём ветку
# Работаешь
git add .
git commit -m "feat: add JWT tokens"
git commit -m "feat: add /login endpoint"
# Отправляешь на Code Review
git push origin feature/user-auth
# → создаёшь Pull Request в GitHubВ следующем уроке — как ветки сливаются: git merge, конфликты и их разрешение.