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

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

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


person Alex    schedule 05.10.2010    source источник
comment
примите ответ @Alex или скажите, почему вы не хотите его принимать.   -  person Charlie Parker    schedule 27.06.2014
comment
@CharlieParker Вероятно, это как-то связано с тем фактом, что это был единственный вопрос Алекса, и он, вероятно, не входил в систему с тех пор: последний раз видели 03 фев. 2011, в 21:29.   -  person yellow-saint    schedule 06.09.2014
comment
@ Джей Би О боже, ты хочешь сказать, что с ним могло что-то случиться???!!!!!!!!!   -  person abbood    schedule 16.09.2014
comment
Можно ли принять получивший наибольшее количество голосов ответ на этот вопрос?   -  person Steve Chambers    schedule 10.01.2015
comment
Возможный дубликат Как переименовать локальную ветку Git?   -  person Vineet Jain    schedule 26.08.2017


Ответы (2)


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

git branch -m newname

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

man git-branch

or

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> является необязательным, если вы хотите переименовать текущую ветку.

person Richard Fearn    schedule 05.10.2010
comment
Или git branch -m other-branch renamed-other-branch, если нет. - person mipadi; 05.10.2010
comment
Кроме того, если вы отправили старую ветку на удаленный сервер, вы можете удалить ее с помощью git push origin :branchname. Это позволит вам нажать новый и удалить старый, по сути, переименовав его на пульте дистанционного управления. - person Jonathan; 07.10.2010
comment
@mipadi создает новую ветку и не удаляет предыдущую. - person Mohammad Arif; 03.08.2015
comment
git branch (-m | -M) [‹oldbranch›] ‹newbranch› У меня не работает, выдавая синтаксическую ошибку. - person Mohammad Arif; 03.08.2015
comment
@MohammedArif С -m он переименовывает старую ветку, поэтому удаляет предыдущую. - person Richard Fearn; 03.08.2015
comment
@MohammedArif Возможно, вы могли бы задать новый вопрос, если команда у вас не работает? С параметрами -m/-M или без них это должно работать :) - person Richard Fearn; 03.08.2015
comment
@RichardFearn, я упомянул мипади, а не тебе :) - person Mohammad Arif; 03.08.2015
comment
@MohammedArif: с флагом -m он переименует other-branch в renamed-other-branch. Имя other-branch больше не будет существовать. - person mipadi; 03.08.2015
comment
Это делает @mipadi, вот где записан комментарий, мне пришлось удалить его с помощью «git push origin: ветка» - person Mohammad Arif; 04.08.2015
comment
@MohammedArif: когда вы переименуете его, он не будет удален ни с каких пультов, а только с вашего локального репозитория. - person mipadi; 04.08.2015

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

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

person javierdvalle    schedule 01.10.2015
comment
Я думаю, что это правильный ответ, ответ Ричарда Фима, получивший большое количество голосов, касается только локального репо, этот касается удаленного. - person user1145404; 23.02.2016
comment
Согласен с комментарием выше, этот ответ был более полным в моем случае. Кроме того, когда я отправил дополнительные коммиты в удаленную ветку после выполнения всех шагов, упомянутых в этом ответе, git снова попытался отправить в ветку old_name. К счастью, git также предоставил исправление в командной строке: git-branch --unset-upstream. После этого все отправленные коммиты отправлялись в удаленную ветку new_name. - person Hans Roerdinkholder; 11.04.2016
comment
имейте в виду, что таким образом вы потеряете способность настаивать на git push, потому что вы получите предупреждение, в котором говорится: Your branch is based on 'old_name, but the upstream is gone. A git push -u origin new_name решить его. - person netalex; 08.02.2019