Gymterview
junior

Что такое ветвление (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/).