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

Я просто переименовал свою локальную ветвь, используя

git branch -m oldname newname

но это только переименовывает локальную версию ветки. Как переименовать объект в github?

Ответ 1

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

git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

Simple. Немного перебирая команды, команда git push по существу:

git push <remote> <local_branch>:<remote_branch>

Таким образом, выполнение push без указания local_branch по существу означает "не принимать ничего из моего локального репозитория и делать его удаленной ветвью". Я всегда считал, что это совсем глупо, но так оно и было.

Изменить: По сравнению с Git 1.7 существует альтернативный синтаксис для удаления удаленной ветки:

git push origin --delete name_of_the_remote_branch

Изменить: Как упоминалось @void.pointer в комментариях

Обратите внимание, что вы можете комбинировать две операции push:

git push origin :old_branch new_branch

Это приведет к удалению старой ветки и добавлению новой.

Ответ 2

Просто удалите старую ветку и создайте новую.

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

git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname

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

Ответ 3

Следующие команды работали для меня:

git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want

Ответ 4

Я нашел 3 команды, как вы можете изменить название ветки git, и эта команда является более быстрым способом сделать это

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 Локальные и удаленные ветки

Ответ 5

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

https://github.com/blog/1377-create-and-delete-branches

Ответ 6

Вот что сработало для меня:

1.) Сначала создайте новую ветку: git push github newname: refs/heads/newname

2.) На сайте github, перейдите к настройкам и измените ветку по умолчанию на новое имя

3.) Удалить старое имя git push github --delete oldname

Ответ 7

  • Загрузите Atlassian SourceTree (бесплатно).
  • Импортировать локальный клон репозитория.
  • Щелкните правой кнопкой мыши свою ветку, чтобы переименовать ее на боковой панели. Выберите "Переименовать ветвь..." из контекстного меню и переименуйте его.
  • Нажмите на начало координат.

Ответ 8

В этой статье показано, как сделать это очень легко.
1. Чтобы переименовать локальный ветвь Git, мы можем использовать команду Git branch -m для изменения имени:
git branch -m feature1 feature2
2. Если вы просто ищете команду для переименования удаленной ветки Git, это она "
git push -u origin feature2:feature3
Убедитесь, что у вас нет тегов на ветке, прежде чем вы это сделаете. Вы можете сделать это с помощью git tag.

Ответ 9

Другим способом является переименовать следующие файлы:

  • перейдите в каталог проекта
  • переименовать .git/refs/head/[branch-name] в .git/refs/head/new-branch-name
  • переименовать .git/refs/remotes/[all-remote-names]/[branch-name] в .git/refs/remotes/[all-remote-names]/new-branch-name

Переименуйте головку и пульты как на локальном ПК, так и на исходном сервере (-ах)/удаленном сервере.

Отладка теперь переименована (локальная и удаленная!)


Внимание

Если ваше текущее имя-ветка содержит слэши (/) git, создайте такие каталоги:

текущее имя-ветки: "awe/some/branch"

  • .git/refs/head/awe/some/branch
  • .git/refs/remotes/[all-remote-names]/awe/some/branch

имя ветки: "new-branch-name"

  • перейдите в каталог проекта
  • скопируйте файл branch из .git/refs/*/awe/some/
  • поместите его в .git/refs/head/.
  • скопируйте файл branch из всех .git/refs/remotes/*/awe/some/
  • поместите их в .git/refs/remotes/*/.
  • переименуйте все файлы branch в new-branch-name.
  • проверьте, выглядит ли каталог и структура файла следующим образом:
    • .git/refs/head/new-branch-name
    • .git/refs/remotes/[all-remote-names]/new-branch-name
  • сделать то же самое на всех ваших удаленных источниках/серверах (если существует)
    • информация: на удаленных серверах обычно нет каталогов refs/remotes/*, потому что вы уже на удаленном сервере;) (возможно, в расширенных конфигурациях git это возможно, но я этого никогда не видел)

Теперь ветвь переименована из awe/some/branch в new-branch-name (локальная и удаленная!)

Удалены каталоги в имени ветки.


Информация: Этот способ может быть не лучшим, но он по-прежнему работает для людей, у которых могут быть проблемы с другими способами.

Ответ 10

В моем случае мне понадобилась дополнительная команда
  git branch --unset-upstream
чтобы моя переименованная ветвь нажала до origin newname.

(Для удобства ввода), я сначала git checkout oldname.
Затем запустите следующее:

git branch -m newname
git push origin :oldname или git push origin --delete oldname
git branch --unset-upstream
git push -u origin newname или git push origin newname

Этот дополнительный шаг может потребоваться только потому, что я (как правило,) настраиваю дистанционное отслеживание на своих ветвях через git push -u origin oldname. Таким образом, когда я проверил oldname, мне нужен только тип git push, а не git push origin oldname

Если я НЕ, используйте команду git branch --unset-upstream до git push origin newbranch, git создает oldbranch и нажимает newbranch на origin oldbranch - побеждает мое намерение.