Содержание

Зачем нужны ветки

Ветка — изолированная копия кода. Делаешь новую фичу в своей ветке, не трогая рабочий код в main. Если что-то пошло не так — просто удаляешь ветку. (Перед первым коммитом проверь .gitignore — мусор в репозитории потом сложно вычистить.)

Основные ветки

main (или master)

Главная ветка. Здесь всегда рабочий, продакшн-готовый код. Никогда не коммить сюда напрямую — только через merge или PR.

develop

Ветка для разработки. В неё вливаются все завершённые фичи. Когда накопился релиз — mergим в main. Используется в командах, для соло-проектов часто не нужна.

Как называть ветки

# Новая фича
feature/user-authentication
feature/dark-mode

# Исправление бага
fix/login-redirect
fix/mobile-menu

# Срочный хотфикс в продакшн
hotfix/payment-crash

# Рефакторинг
refactor/api-layer

Типичный рабочий процесс

# 1. Синхронизируемся с main
git checkout main
git pull origin main

# 2. Создаём ветку для новой фичи
git checkout -b feature/new-navbar

# 3. Работаем, коммитим
git add .
git commit -m "feat: add responsive navbar"

# 4. Пушим ветку
git push -u origin feature/new-navbar

# 5. Создаём Pull Request на GitHub
# 6. После ревью — merge в main, удаляем ветку

Merge vs Rebase

Merge — создаёт merge-коммит, сохраняет полную историю. Подходит для публичных веток. (Развёрнутое сравнение с примерами из реального проекта — в статье rebase vs merge.)

git checkout main
git merge feature/new-navbar

Rebase — перемещает коммиты фичи поверх main, история становится линейной. Подходит для локальных веток до пуша.

git checkout feature/new-navbar
git rebase main

⚠️ Никогда не делай rebase публичных веток, в которые пушили другие — это перепишет историю и создаст конфликты у всех.

Удаление веток

После мержа ветки лучше удалять — они засоряют список.

# Удалить локально
git branch -d feature/new-navbar

# Удалить на remote
git push origin --delete feature/new-navbar

💡 В настройках репозитория на GitHub есть опция «Automatically delete head branches» — ветки удаляются автоматически после merge PR. Все команды из этой серии одной страницей — в git-шпаргалке.

Поделиться: