git branch: список, создание и удаление веток

Обновлено 31 июля 2026 г.

git branch перечисляет ветки репозитория, создаёт новую и удаляет ту, что больше не нужна.

Ветка - это указатель на один коммит, а не копия проекта. Отсюда и набор операций: посмотреть, куда указывают имена, поставить новое имя на текущий коммит, снять имя, которое отслужило.

Без аргументов команда печатает список, а звёздочка отмечает ветку, на которой ты стоишь:

$ git branch
  feature-x
* main

$ git branch -v            # то же плюс последний коммит каждой ветки
  feature-x 1ef2a5c первая версия отчёта
* main      1ef2a5c первая версия отчёта

С именем в аргументе команда создаёт ветку от текущего коммита и оставляет тебя там же, где ты был. Переход - это отдельная команда git switch:

$ git branch feature-x     # создать, остаться на main
$ git switch feature-x     # перейти
Switched to branch 'feature-x'

Создание не занимает времени даже в огромном репозитории, потому что копировать нечего. Ветка лежит в файле .git/refs/heads/<имя>, и внутри одна строка: хеш коммита, сорок символов.

Удаление и переименование

Маленькая -d убирает только ту ветку, чья работа уже влита куда-то ещё. Если работа нигде не сохранена, git откажется:

$ git branch -d feature-x
error: the branch 'feature-x' is not fully merged
hint: If you are sure you want to delete it, run 'git branch -D feature-x'

$ git branch -D feature-x  # удалить в любом случае
Deleted branch feature-x (was f57b8c6).

Заглавная -D вопросов не задаёт. Но даже она не стирает коммиты с диска: пропадает только указатель, а сами коммиты ещё какое-то время находятся по хешу через git reflog.

Переименование делает -m. С двумя именами оно трогает названную ветку, с одним - ту, на которой ты стоишь:

$ git branch -m feature-x feature-y   # переименовать feature-x в feature-y
$ git branch -m draft                 # переименовать текущую ветку в draft

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

git branch feature-x не переводит на новую ветку. Классический сценарий: человек создал ветку, сделал коммит и обнаружил его в main. Чтобы создать и сразу перейти, есть git switch -c feature-x.

Ветку, на которой стоишь, удалить нельзя: error: cannot delete branch 'main' used by worktree at '/home/me/report'. Сначала перейди на другую, потом удаляй.

Где это в учебнике

Глава 5. Ветки: параллельные версии проекта вводит ветку как указатель и показывает, зачем держать несколько версий проекта одновременно.

Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.