Git: как переименовать ветку локально и на сервере

Категория: Git · Язык: Bash · Обновлено:

Чтобы переименовать ветку, на которой вы находитесь, выполните git branch -m новое-имя. Для любой другой ветки укажите оба имени: git branch -m старое новое. На сервере ветку переименовать нельзя, поэтому её создают заново и удаляют старую.

Переименовать локальную ветку

Bash
git branch -m feature/new-name                  # текущая ветка
git branch -m feature/old-name feature/new-name # любая другая ветка
git branch --list                               # проверить результат

Коммиты при этом не меняются, git только переименовывает ссылку.

Переименовать ветку на сервере

Выполните три команды: отправьте ветку под новым именем, привяжите её к серверной и удалите старую.

Bash
git push -u origin feature/new-name   # создать новую ветку на сервере и привязать к ней локальную
git push origin --delete feature/old-name  # удалить старую ветку на сервере

Переименовать master в main

Bash
git branch -m master main
git push -u origin main
git remote set-head origin main       # обновить ссылку origin/HEAD у себя

После этого смените ветку по умолчанию в настройках репозитория на GitHub, GitLab или Gitea и только потом удаляйте master: сервис не позволит удалить ветку по умолчанию.

Bash
git push origin --delete master

Что сделать коллегам

Коллеги получают новую ветку через fetch, а свою локальную переименовывают и перепривязывают:

Bash
git fetch --prune
git branch -m master main
git branch -u origin/main main
git remote set-head origin -a

Частые вопросы

Можно ли переименовать ветку, не удаляя старую на сервере?

Можно, но тогда на сервере будут две одинаковые ветки под разными именами. Обычно старую удаляют, чтобы не путать команду.

Как проверить, к какой удалённой ветке привязана локальная?

Выполните git branch -vv: в квадратных скобках будет указана связанная ветка, например [origin/main].