Переименование ветки в 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
- побеждает мое намерение.