Git: Переименование ветки
Последнее обновление
Вы переименовываете ветку с помощью git branch -m (-m означает "move", переместить). С одним аргументом он переименовывает ветку, на которой вы находитесь; с двумя - переименовывает любую ветку по имени. Переименование чисто локально: если ветка уже была отправлена, вы также удаляете старое имя в удалённом репозитории и отправляете новое.
Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего не нужно устанавливать.
Синтаксис
| Command | What it does |
|---|---|
git branch -m new-name | Переименовывает ветку, на которой вы сейчас находитесь |
git branch -m old-name new-name | Переименовывает другую ветку по имени |
git branch -M new-name | Принудительно переименовывает (перезаписывает существующее имя) |
Переименование ветки, находящейся в удалённом репозитории
Переименование локально, поэтому уже отправленная ветка требует трёх дополнительных шагов.
| Step | Command | Result |
|---|---|---|
| 1 | git branch -m old new | Переименовывает ветку локально |
| 2 | git push origin --delete old | Удаляет старое имя в удалённом репозитории |
| 3 | git push -u origin new | Отправляет новое имя и задаёт upstream |
Часто задаваемые вопросы о переименовании ветки Git
Как переименовать ветку, на которой я сейчас нахожусь?
Выполните
git branch -m new-name, указав только новое имя. Git переименовывает текущую ветку на месте - вы остаётесь на ней, а ваши коммиты и история остаются нетронутыми.Как переименовать ветку, не переключаясь на неё?
Передайте оба имени:
git branch -m old-name new-name. Это переименует old-name в new-name, даже если вы сейчас находитесь на другой ветке.Как переименовать ветку, которая уже находится на GitHub?
Переименуйте её локально с помощью
git branch -m old new, удалите старое имя в удалённом репозитории с помощью git push origin --delete old, затем отправьте новое имя и задайте его upstream с помощью git push -u origin new. Всем остальным, у кого есть старая ветка, потребуется обновить свою локальную копию.В чём разница между -m и -M?
-m (move) переименовывает ветку, но отказывается это делать, если ветка с целевым именем уже существует, так что вы не сможете случайно затереть другую ветку. -M принудительно выполняет переименование, перезаписывая существующую ветку с этим именем. Используйте -m, если только вы специально не намерены перезаписать.Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить эти команды в настоящей оболочке в вашем браузере - ничего не нужно устанавливать. Бесплатный интерактивный курс по Git от Coddy также подробно охватывает работу с ветками.