Как переименовать местную ветку Git? - PullRequest
7762 голосов
/ 06 июля 2011

Я не хочу переименовывать удаленную ветку, как описано в Переименовать основную ветку как для локальных, так и для удаленных репозиториев Git .

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

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

Ответы [ 33 ]

33 голосов
/ 04 марта 2018

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

git branch -m old_branchname new_branchname

Здесь длинное имя опции -m равно --move.Таким образом, мы также можем использовать:

git branch --move old_branchname new_branchname

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

git branch -m new_branchname

или

git branch -move new_branchname

ЕслиВы хотите переместить эти изменения в удаленный режим, а затем использовать следующее.

git push origin :old_branchname new_branchname

Это удалит удаленную ветвь old_branchname и выдвинет локальную ветвь new_branchname.

git push origin -u new_branchname

Это сбросит восходящую ветвь для new_branchname локальной ветки.

32 голосов
/ 05 августа 2015

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

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name
27 голосов
/ 08 апреля 2018
  1. Переименуйте ваше местное отделение.

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

git branch -m new-name

Если вы находитесь в другой ветке:

git branch -m old-name new-name
  1. Удалите удаленную ветвь со старым именем и нажмите локальную ветвь с новым именем.

git push origin :old-name new-name

  1. Сброс восходящей ветви для локальной ветви с новым именем. Переключитесь на ветку и затем:

git push origin -u new-name

Или для быстрого способа сделать это, вы можете использовать эти 3 шага:

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

git branch -m old_branch new_branch  

# Удалить старую удаленную ветку

git push origin :old_branch  

# Нажмите новую ветку, установите локальную ветку для отслеживания нового пульта

git push --set-upstream origin new_branch   

Ссылка: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html

22 голосов
/ 10 мая 2016

Вот три шага: команда, которую вы можете вызвать внутри терминала и изменить имя филиала.

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

Если вам нужно больше: пошагово, Как изменить имя Git Branch хорошая статья об этом.

22 голосов
/ 25 мая 2015

Вероятно, как уже упоминалось другими, это будет случайное несоответствие в именах ветвей.

Если у вас такая ситуация, я могу предположить, что вы работаете в Windows, что также приведет к:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

Затем вы должны сделать промежуточный шаг:

$ git branch -m temporary
$ git branch -m casesensitive

Ничего больше.

20 голосов
/ 19 мая 2016

Попытка ответить конкретно на вопрос (хотя бы заголовок).

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

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

Теперь, когда вы запускаете git push, удаленный old_branch ref обновляется вашим локальным new_branch.

Вы должны знать и помнить эту конфигурацию.Но это может быть полезно, если у вас нет выбора для имени удаленной ветви, но вам это не нравится (о, я имею в виду, у вас есть очень хорошая причина не любить его)!) и предпочитайте более четкое имя для вашей локальной ветки.

Играя с конфигурацией выборки, вы даже можете переименовать локальную удаленную ссылку.то есть, имея refs/remote/origin/new_branch ref указатель на ветвь, то есть фактически old_branch на origin.Тем не менее, я крайне не одобряю это, для безопасности вашего ума.

18 голосов
/ 04 июля 2017

Смена ветки локально довольно просто ...

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

git branch -m my_new_branch

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

git branch -m my_old_branch my_new_branch

Кроме того, я создаю изображение ниже, чтобы показать это в действии в командной строке . В этом случае вы находитесь на ветке master, например:

Change branch name locally

18 голосов
/ 26 мая 2017

Если вы хотите использовать SourceTree (что я настоятельно рекомендую), вы можете щелкнуть правой кнопкой мыши по вашей ветке и выбрать «Переименовать».

enter image description here

17 голосов
/ 02 сентября 2014

Чтобы переименовать текущую ветвь (за исключением отдельного состояния HEAD), вы также можете использовать этот псевдоним:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'
15 голосов
/ 08 марта 2015

Другой вариант - вообще не использовать командную строку.Клиенты Git GUI, такие как SourceTree , устраняют большую часть синтаксической кривой обучения / боли, из-за которой такие вопросы входят в число самых просматриваемых при переполнении стека.

В SourceTree щелкните правой кнопкой мышив любой локальной ветви на панели «Филиалы» слева и выберите «Переименовать ...».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...