Как переименовать имя локальной и удаленной ветки Git?

У меня есть четыре ветки, такие как master → origin/regacy, FeatureA → origin/FeatureA. Как видите, я набрал неправильное имя.

Поэтому я хочу переименовать имя удаленной ветки (origin/regacy → origin/legacy или origin/master)

Я пробую команду ниже:

git remote rename regacy legacy

Но консоль Git вернула мне сообщение об ошибке.

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'

Как я могу решить эту проблему?

Ответ 1

Enter image description here


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

Переименование ветки

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

# Delete the old branch on remote - where <remote> is, for example, origin
git push <remote> --delete old_name

# Push the new branch to remote
git push <remote> new_name

# Reset the upstream branch for the new_name local branch
git push <remote> -u new-name

Enter image description here


Важная заметка:

Когда вы используете git branch -m (переместить), Git также обновляет вашу ветку отслеживания с новым именем.

git remote rename legacy legacy

git remote rename пытается обновить удаленный раздел в вашем файле конфигурации. Он будет переименовывать пульт с заданным именем в новое, но в вашем случае он не нашел ни одного, поэтому переименование не удалось.

Но это не будет делать то, что вы думаете; он переименует ваше удаленное имя локальной конфигурации, а не удаленную ветвь.


Примечание. Серверы Git могут позволять вам переименовывать ветки Git с помощью веб-интерфейса или внешних программ (таких как Sourcetree и т.д.), Но вы должны помнить, что в Git вся работа выполняется локально, поэтому рекомендуется использовать приведенные выше команды. на работу.

Ответ 2

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

  1. Переименуйте свой локальный филиал:

    • Если вы находитесь в филиале, вы хотите переименовать:
      git branch -m new-name

    • Если вы находитесь в другом филиале:
      git branch -m old-name new-name

  2. Удалите удаленную ветку old-name и нажмите локальную ветку new-name:
    git push origin :old-name new-name

  3. Сбросьте ветвь восходящего потока для локального ветки нового имени:
    Перейдите к ветке, а затем:
    git push origin -u new-name

Ответ 3

Кажется, есть прямой путь:

Если вы действительно хотите переименовать ветки удаленно (без переименования каких-либо локальных веток одновременно), вы можете сделать это с помощью одной команды, например

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Переименование веток удаленно в Git

Смотрите оригинальный ответ для более подробной информации.

Ответ 4

Это также можно сделать следующим образом.

Сначала переименуйте локальную ветку, затем удаленную ветку.

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

Если залогинен в другой ветке,

git branch -m old_branch new_branch 

Если вы вошли в ту же ветку,

git branch -m new_branch

Переименование удаленной ветки:

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch

Ответ 5

Там нет прямого метода,

  1. Переименовать местное отделение,

    Моя текущая ветка мастер

    git branch -m master_renamed #master_renamed - новое имя мастера

  2. Удалить удаленную ветку,

    git push origin --delete master #origin is remote_name

  3. Нажмите переименованную ветку в удаленную,

    git push origin master_renamed

Это...

Ответ 6

Это можно сделать даже без переименования локальной ветки в три простых шага:

  1. Зайдите в свой репозиторий в GitHub
  2. Создайте новую ветку из старой ветки, которую вы хотите переименовать
  3. Удалить старую ветку

Ответ 7

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

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'

Использование: git move FROM_BRANCH TO_BRANCH

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

Ответ 8

Мне пришлось выполнить следующую задачу, чтобы переименовать локальную и удаленную ветку:

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

#  Delete the old remote branch
git push origin --delete <old_name>

# push to new remote branch - creates new remote branch
git push origin <new_name>

# set new remote branch as default remote branch for local branch
git branch --set-upstream-to=origin/<new_name> <new_name>