git branch и git checkout

Команды для управления ветками (branch): создание, переключение, просмотр и удаление изолированных линий разработки.

Зачем нужно

Ветки позволяют разрабатывать фичи, исправлять баги и проводить эксперименты изолированно от основного кода. Изменения в одной ветке не влияют на другие до явного слияния (merge). Это основа любого командного workflow — каждая задача живёт в своей ветке, проходит ревью через Pull Request и только потом попадает в main.

Где используется

  • Разработка каждой новой фичи в отдельной ветке feature/...
  • Изоляция исправления бага в ветке fix/... или hotfix/...
  • Создание ветки для экспериментов без риска сломать рабочий код
  • Gitflow: ветки develop, release/*, hotfix/*

Основной контент

git branch — управление ветками

# Список локальных веток (* = текущая)
git branch

# Список всех веток (локальных и удалённых)
git branch -a

# Список только удалённых веток
git branch -r

# Создать новую ветку (без переключения)
git branch feature/auth

# Удалить ветку (только если слита)
git branch -d feature/auth

# Принудительно удалить ветку (даже не слитую)
git branch -D feature/auth

# Переименовать текущую ветку
git branch -m new-name

# Показать последний commit на каждой ветке
git branch -v

git checkout — переключение

# Переключиться на существующую ветку
git checkout main

# Создать ветку и сразу переключиться
git checkout -b feature/login

# Создать ветку от конкретного коммита или тега
git checkout -b hotfix/v1.2 v1.2.0

# Вернуть файл к состоянию в staging (отменить правки в рабочей директории)
git checkout -- src/app.js

# Вернуть файл к состоянию в конкретном коммите
git checkout abc1234 -- src/app.js

git switch — современная альтернатива (Git 2.23+)

# Переключиться на ветку
git switch main

# Создать и переключиться
git switch -c feature/search

# Вернуться к предыдущей ветке
git switch -

Типичный feature workflow

# 1. Обновить main
git switch main
git pull

# 2. Создать ветку для задачи
git switch -c feature/user-profile

# 3. Работать, коммитить
git add .
git commit -m "feat(profile): добавить страницу профиля"

# 4. Отправить на remote
git push -u origin feature/user-profile

# 5. После merge PR — удалить локальную ветку
git branch -d feature/user-profile

Частые ошибки

  • Коммитить прямо в main — нарушение командного workflow; всегда создавай ветку для задачи
  • Забыть переключиться перед началом работы — изменения окажутся в неправильной ветке; проверяй git branch или смотри на подсказку shell
  • Удалить ветку до mergegit branch -d защищает от этого, но -D удалит без вопросов
  • Длинное имя ветки со спецсимволами — используй только a-z, 0-9, /, -; пробелы недопустимы

Связанные темы

Ресурсы