Переименование ветки

Тема дорожной карты · Изучи Git

Переименование ветки в Git осуществляется с помощью команды git branch -m <new>, которая переименовывает текущую ветку на новое имя. Если вы хотите переименовать ветку, имеющую другое имя, используйте команду git branch -m <old> <new>. Для переименования ветки поверх существующего имени используйте флаг -M. После переименования ветки на локальной машине, важно также обновить её имя на удалённом репозитории. Это можно сделать, сначала запушив новую ветку с помощью команды git push -u origin <new>, а затем удалив старую ветку с помощью команды git push origin --delete <old>.

Переименование веток может потребовать обновления Pull Requests и правил защиты веток в вашем хостинге, так как некоторые системы не автоматически обновляют эти данные после переименования ветки. Типичный пример переименования ветки — это изменение названия основной ветки с master на main. GitHub предлагает удобный one-click flow для выполнения этой задачи.

Как это работает

Переименование ветки в Git начинается с создания новой ветки с помощью команды git branch <name>. Чтобы переключиться на новую ветку, используйте команды git switch <name> или git checkout <name>. Для создания новой ветки и немедленного переключения на неё, используйте команду git switch -c <name>. Удаление ветки можно выполнить с помощью команд git branch -d <name> для удаления ветки, которая была полностью слияна, или git branch -D <name> для принудительного удаления ветки. Команда git branch -v выводит список всех веток с последним коммитом для каждой из них.

HEAD указывает на текущую ветку, а текущая ветка указывает на свой последний коммит (tip). Ветки в Git практически бесплатны, поэтому рекомендуется создавать их в большом количестве для управления различными версиями кода.

Когда применять

Ветка должна создаваться для каждой отдельной работы, например, для каждого Pull Request. Конвенция имён веток может включать префиксы, такие как feat/ для новых функций, fix/ для исправлений ошибок и docs/ для изменений документации. Удалённые ветки, которые были полностью слияны, следует удалять, чтобы избежать накопления мусора. Команда git fetch --prune автоматически удаляет ветки, которые были удалены на удалённом репозитории, но ещё существуют локально. Команда git switch - позволяет быстро переключиться на предыдущую ветку, аналогично команде cd - для перемещения между директориями.

Типичные ошибки

Типичными ошибками при переименовании веток являются следующие: ответвление от неверной базы (например, ответвление от feature-A, когда было нужно ответвиться от main), что может потребовать использования interactive rebase или cherry-pick для исправления; долгоживущие ветки, которые расходятся от основной ветки main, что делает слияние затруднительным; использование git checkout для переключения веток и отмены изменений файлов, что может привести к путанице, так как git checkout используется для обоих действий. Современные команды git switch и git restore позволяют более чётко разделить эти операции.

Связанные понятия

Полезные ресурсы