Ветки и переключение
Что такое ветка
Ветка (branch) — независимая линия разработки. Работаешь над фичей — не ломаешь основную ветку.
Ветки в Git — очень дешёвые. Можно создавать десятки без проблем.
Просмотр веток
git branch # локальные
git branch -a # включая удалённые
git branch -v # с последним коммитом
git branch --merged # влитые в текущую
git branch --no-merged # не влитые
Создание и переключение
git branch feature-login # создать
git checkout feature-login # переключиться (старый способ)
git switch feature-login # переключиться (новый способ)
# Создать и сразу переключиться
git checkout -b feature-login
git switch -c feature-login
switch — современный синтаксис, checkout — старый. Оба работают.
Переименование и удаление
git branch -m old-name new-name # переименовать
git branch -d feature-login # удалить (если влита)
git branch -D feature-login # удалить принудительно
Стратегии ветвления
GitHub Flow (для небольших команд)
main
└── feature/новая-фича
└── PR → merge в main
Правила:
main— всегда работает- Каждая фича — отдельная ветка от
main - Merge в
mainчерез Pull Request
Плюс: простота. Минус: нет staging-среды.
Git Flow (для крупных проектов)
main (продакшен)
└── develop (разработка)
├── feature/* (фичи)
├── release/* (релизы)
└── hotfix/* (срочные фиксы)
Ветки:
main— только стабильный код, только релизыdevelop— основная разработкаfeature/*— фичи, отdeveloprelease/*— подготовка релизаhotfix/*— срочные фиксы наmain
Плюс: чёткая структура. Минус: сложно для маленьких команд.
Trunk-Based Development
Все коммитят в main. Ветки максимум на день-два.
Плюс: минимум конфликтов. Минус: нужны хорошие тесты.
Именование веток
Правила:
feature/user-registration
feature/add-search
fix/login-error
fix/500-on-profile
refactor/user-service
hotfix/critical-payment-bug
chore/update-deps
Формат: тип/краткое-описание-через-дефис.
Плохо: new, test, fix, branch1.
Хорошо: feature/oauth-google-login.
Проверка: где я
git branch # текущая — со звёздочкой
git status # тоже показывает
Отслеживание удалённых веток
git push -u origin feature-login # запушить и связать
git branch --set-upstream-to=origin/main
После -u можно просто:
git push
git pull
Удалённые ветки
git push origin feature-login # создать на удалёнке
git push origin --delete feature-login # удалить
git fetch --prune # убрать локальные ссылки на удалённые ветки
git remote prune origin # то же
Кейс: работа над фичей
# 1. Обновляем main
git switch main
git pull
# 2. Создаём ветку
git switch -c feature/user-profile
# 3. Работаем
git add .
git commit -m "feat: добавить страницу профиля"
# 4. Пушим
git push -u origin feature/user-profile
# 5. Открываем PR (на GitHub)
# 6. После merge — удаляем ветку
git switch main
git pull
git branch -d feature/user-profile
Итог
Ветки — основа командной работы. Для веба бери GitHub Flow: просто, быстро, понятно.
Дальше — merge и разрешение конфликтов.