Что такое ветвление (branching) в Git?
Ветвление (branching) — это механизм Git, позволяющий отклониться от основной линии разработки и работать независимо, не затрагивая основную ветку.
Аналогия из жизни: ветвление — как черновики документа. Вы копируете основной документ, вносите правки в черновик, а когда всё готово — объединяете с оригиналом. При этом оригинал остаётся нетронутым, пока вы экспериментируете.
Как работают ветки в Git
Ветка в Git — это просто лёгкий подвижный указатель на один из коммитов. Создание новой ветки занимает мгновение, так как это всего лишь запись 41-байтового файла (40 символов SHA-1 + перенос строки).
HEAD — специальный указатель, который показывает, на какой ветке вы сейчас находитесь.
Пример
# Посмотреть все локальные ветки (* отмечает текущую)
git branch
# * main
# feature/auth
# bugfix/login-error
# Посмотреть все ветки, включая удалённые
git branch -a
# Создать новую ветку от текущего коммита
git branch feature/payment
# Создать ветку от конкретного коммита
git branch hotfix/urgent a1b2c3d
# Переключиться на ветку
git switch feature/payment
# Создать и переключиться одной командой
git switch -c feature/payment
# Переименовать ветку
git branch -m old-name new-name
# Удалить ветку
git branch -d feature/payment
Соглашения об именовании веток
| Префикс | Назначение | Пример |
|---|---|---|
feature/ |
Новая функциональность | feature/user-registration |
bugfix/ |
Исправление бага | bugfix/null-pointer-on-login |
hotfix/ |
Срочное исправление в production | hotfix/security-patch |
release/ |
Подготовка релиза | release/2.1.0 |
chore/ |
Технические задачи | chore/update-dependencies |
Визуализация ветвления
Пример
feature/auth
|
C4 --- C5 --- C6
/
C1 --- C2 --- C3 --- C7 main
\
C8 --- C9 bugfix/login
Ключевые моменты
- Ветка в Git — это указатель на коммит, а не копия файлов. Создание ветки моментально и не требует дополнительного дискового пространства
- HEAD указывает на текущую ветку, а ветка — на последний коммит в ней
- В Git переключение между ветками — быстрая операция, так как меняется только рабочая директория
- Ветки — это основа командной разработки: каждая задача выполняется в отдельной ветке
Частые ошибки
- Забывать переключиться на нужную ветку перед началом работы — коммиты попадают не туда
- Работать долго в feature-ветке без синхронизации с main — приводит к сложным конфликтам
- Не удалять слитые ветки — засоряет репозиторий
- Использовать неинформативные имена веток (например,
test,fix,my-branch)
Как используется в 2026
- Автоматическое создание веток из задач в Jira/YouTrack через интеграции с Git-платформами
- Защита веток (branch protection rules) — обязательный code review и прохождение CI перед merge в main
- Автоматическое удаление веток после merge через настройки GitHub/GitLab
- Short-lived feature branches (1-3 дня) стали стандартом в рамках Trunk-Based Development
На собеседовании: подчеркните, что ветка — это лёгкий указатель на коммит (41 байт), а не копия файлов. Это фундаментальное отличие Git от SVN, где создание ветки означало копирование директории. Покажите знание соглашений об именовании (feature/, bugfix/, hotfix/).