Изменить название ветки в репозитории Git

295

Как переименовать существующую ветку в репозитории Git?

Я хочу, чтобы текущая ветвь имела новое имя.

Alex
источник
2
примите ответ @ Алекс или скажите, почему вы не хотите его принимать.
Чарли Паркер
1
@CharlieParker Это, вероятно, как-то связано с тем, что это был единственный вопрос Алекса, и он, вероятно, не входил в систему с тех пор: «В последний раз видел 3 февраля 11 в 21:29»
yellow-saint
13
@JB OMG ты говоришь, что с ним что-то могло случиться ??? !!!!!!!!!
abbood
1
Может ли быть принят ответ на этот вопрос?
Стив Чемберс

Ответы:

465

Предполагая, что вы в данный момент находитесь на ветке, которую хотите переименовать:

git branch -m newname

Это задокументировано в руководстве git-branch, которое вы можете просмотреть, используя

man git-branch

или

git help branch

В частности, команда

git branch (-m | -M) [<oldbranch>] <newbranch>

где параметры:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> необязательно, если вы хотите переименовать текущую ветку.

Ричард Ферн
источник
10
Или git branch -m other-branch renamed-other-branchесли нет.
Mipadi
32
Кроме того, если вы перенесли старую ветку на удаленный, вы можете удалить ее с помощью git push origin :branchname. Это позволит вам нажать новый и удалить старый, по существу переименовав его на удаленном.
Джонатан
1
@mipadi, он создает новую ветку и не удаляет предыдущую.
Мохаммад Ариф
git branch (-m | -M) [<oldbranch>] <newbranch> у меня не сработало, выдав синтаксическую ошибку.
Мухаммед Ариф
@MohammedArif С -m, он переименовывает старую ветку, так же удалить предыдущую.
Ричард Ферн
177

Если вы в данный момент находитесь на ветке, которую хотите переименовать:

git branch -m new_name 

Или еще:

git branch -m old_name new_name 

Вы можете проверить с помощью:

git branch -a

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

git push origin :old_name

Это удалит ветку, затем загрузите ее с новым именем:

git push origin new_name

Источник: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

javierdvalle
источник
13
Я думаю, что это правильный ответ, высоко оцененный ответ Ричарда Фима касается только локального репо, этот - удаленного.
user1145404
4
Согласившись с комментарием выше, этот ответ был более полным в моем случае. Кроме того, когда я продвинул дополнительные коммиты в удаленную ветку после выполнения всех шагов, упомянутых в этом ответе, git попытался снова нажать на old_nameветку. К счастью, мерзавец также поставляется починку в командной строке: git-branch --unset-upstream. После этого все отправленные коммиты перешли в new_nameудаленную ветку.
Ханс Рердинхолдер
2
имейте в виду, что таким образом вы потеряли способность толкать, git pushпотому что вы произносите предупреждение, которое говорит: Your branch is based on 'old_name, but the upstream is gone.« git push -u origin new_nameРешите это».
netalex