Ветки: создание, переключение и слияние
ветки позволяют разрабатывать фичи изолированно и объединять результат через merge или rebase.
Почему это важно: Работа без веток означает постоянный риск сломать рабочий код. Ветки — основа любого командного процесса разработки.
Главная идея
Ветка — это просто лёгкий указатель на коммит. Переключение между ветками мгновенно, потому что Git не копирует файлы.
Как это выглядит на практике
- git branch feature/login создаёт новую ветку от текущего коммита.
- git switch feature/login переключает рабочую директорию на эту ветку.
- Разработчик делает коммиты в ветке, не затрагивая main.
- git merge feature/login объединяет ветку с main.
Что происходит под капотом
- Ветка — файл в .git/refs/heads/ содержащий SHA-1 последнего коммита ветки.
- При переключении ветки Git обновляет HEAD и меняет содержимое рабочей директории по дереву коммита.
- Fast-forward merge просто двигает указатель ветки вперёд, не создавая merge-коммит.
- Three-way merge использует общего предка двух веток для нахождения изменений и создаёт merge-коммит.
Типичные ошибки и заблуждения
- Ошибка: нужно ждать завершения фичи, чтобы создать ветку. Ветку создают до начала работы над задачей.
- Ошибка: merge всегда создаёт лишний коммит. Fast-forward merge обходится без него.
- Ошибка: rebase опасен всегда. Rebase опасен только для опубликованных веток, которые используют другие.
- Ошибка: после merge можно удалить ветку только вручную. git branch -d автоматически удаляет уже слитые ветки.
Ключевые выводы
- Ветки в Git невесомы — их создание мгновенно и не требует копирования файлов.
- main (или master) — стабильная ветка; фичи разрабатываются в отдельных ветках.
- Конфликт — нормальная часть работы с ветками, а не признак ошибки.
- Называйте ветки по задаче: feature/login, fix/cart-bug, chore/update-deps.
Термины урока
Связь с работой backend-разработчика
В командах используют модели ветвления: GitHub Flow (feature → main) или Git Flow (feature → develop → release → main). Выбор модели влияет на скорость деплоя и частоту релизов.
Мини-разбор реальной ситуации
Два разработчика редактировали один контроллер в разных ветках. При merge Git показывает конфликт. Решение: открыть файл, найти маркеры <<<<<<, ======, >>>>>>, выбрать нужный вариант, сохранить и сделать коммит.
Что запомнить
- Создавайте ветку на каждую задачу, даже маленькую.
- Конфликты при merge — нормально; их надо уметь разрешать.
- Удаляйте ветки после слияния, чтобы репозиторий не засорялся.
Итог
Ветки — главный инструмент изоляции работы в Git. Их правильное использование делает командную разработку предсказуемой и безопасной.