Я просто переименовал свою локальную ветку, используя
git branch -m oldname newname
но это только переименовывает локальную версию ветки. Как я могу переименовать тот на GitHub?
Я просто переименовал свою локальную ветку, используя
git branch -m oldname newname
но это только переименовывает локальную версию ветки. Как я могу переименовать тот на GitHub?
Ответы:
Как уже упоминалось, удалите старую версию на Github и повторно нажмите, хотя используемые команды немного более многословны, чем необходимо:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Просто. Немного рассредоточив команды, команда 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 в комментариях
Обратите внимание, что вы можете объединить 2 операции push:
git push origin :old_branch new_branch
Это удалит старую ветку и вытолкнет новую.
Это можно превратить в простой псевдоним, который принимает в качестве аргументов удаленную исходную ветку и имя новой ветки ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Использование:
git branchm origin old_branch new_branch
Обратите внимание, что позиционные аргументы в командах оболочки были проблематичны в более старых (до 2.8?) Версиях git, поэтому псевдоним может варьироваться в зависимости от версии git. Смотрите это обсуждение для деталей.
git push origin :old_branch new_branch
. Это удалит старую ветку и вытолкнет новую.
git branch -m new_branch
(переименуйте old_branch в new_branch) 2. git commit -m 'msg'
, 3. git push
4. Ммм, old_branch появляется в Github, вопрос Google, и меня выводят на ваш ответ 5. git push origin :old_branch
(говорит, что он удален) 6. git push origin new_branch
... завершает, затем говорит * [new branch] new_branch -> old_branch
. Вернитесь к Github и old_branch
снова появитесь . Если я удаляю в веб-интерфейсе Github, у меня есть опция «Восстановить», поэтому кажется, что нажатие на new_branch просто восстанавливает.
У меня работали следующие команды:
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
Я нашел 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 push --set-upstream
является наиболее важной частью, если вы случайно изменили имя ветки с помощью приложения github перед удалением удаленной ветки.
Просто удалите старую ветку и создайте новую.
Пример (исключительно переименование удаленной ветви):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Вы также, вероятно, должны переименовать локальную ветку и изменить настройки для того, где нажать / тянуть.
git push origin newname:refs/heads/newname
? master и newname могут не указывать на один и тот же коммит.
1. Переименуйте свое местное отделение.
Если вы находитесь на ветке, которую хотите переименовать:
git branch -m new-name
Если вы находитесь в другой ветке:
git branch -m old-name new-name
2. Удалите удаленную ветку со старым именем и нажмите локальную ветвь с новым именем.
git push origin :old-name new-name
3. Сбросьте восходящую ветку для локальной ветки с новым именем.
Переключитесь на ветку и затем:
git push origin -u new-name
Итак, вывод
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
git branch -m new-name && git push origin :master new-name
. Это не удастся. Если этот ответ касается только git, а не github, тогда этот вопрос является дубликатом нескольких других вопросов и должен быть закрыт. Если это действительно о github, то ответ должен охватывать github. Этот ответ не дает.
Вы можете сделать это без терминала, вам просто нужно создать ветку с новым именем и удалить старую после. Вы можете использовать этот пост, чтобы сделать это.
Эта статья показывает, как это сделать очень легко.
1. Чтобы переименовать локальную ветку Git, мы можем использовать команду Git branch -m, чтобы изменить имя:
git branch -m feature1 feature2
2. Если вы просто ищете команду для переименования удаленной ветки Git, вот она: «
git push -u origin feature2:feature3
Проверьте, что у вас нет теги на ветке, прежде чем сделать это. Вы можете сделать это с git tag
.
Другой способ - переименовать следующие файлы :
.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
Переименуйте голову и пульты как на локальном ПК, так и на источниках / удаленных серверах
Если ваше текущее имя ветки содержит slashes ( /
), 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
awe/some/branch
в new-branch-name
(локальный и удаленный!)Информация: этот способ может быть не самым лучшим, но он все еще работает для людей, у которых могут быть проблемы с другими способами
В моем случае мне потребовалась дополнительная команда,
чтобы заставить мою переименованную ветку перейти в .
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
победе над моими намерениями.
Следующие команды переименовывают ветку локально, удаляют старую ветку в удаленном местоположении и выдвигают новую ветвь, настраивая локальную ветвь для отслеживания нового удаленного:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
Все просто . Чтобы переименовать ветку git локально и удаленно, используйте этот фрагмент (протестировано и работает как брелок):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Объяснение:
Переименовать Шаг:
Справочник по Git: с опцией -m или -M будет переименован в. Если имеется соответствующий reflog, он переименовывается для соответствия, и создается запись reflog для запоминания переименования ветви. Если существует, -M должен быть использован для принудительного переименования.
Удалить шаг:
Ссылка на Git: git push origin: экспериментальный. Найдите ссылку, соответствующую экспериментальной, в репозитории origin (например, refs /heads / экспериментальный) и удалите ее.
Обновление на этапе удаленного репо (восходящая ссылка для отслеживания):
Ссылка на Git: --set-upstream Для каждой ветки, которая актуальна или успешно отправлена, добавьте ссылку на восходящий поток (отслеживание), используемую git-pull [1] без аргументов и другими командами. Для получения дополнительной информации см. Branch..merge в git-config [1].
git push origin head
git branch -m old-branch-name новое-имя-ветви
git push origin head
В ветке git запустите git branch -m old_name new_name Это изменит имя ветки в вашем локальном репозитории git push origin: old_name new_name Это приведет к удалению измененного имени и удалению старой ветви git push origin -u new_name Устанавливает отслеживание локальной ветви удаленная ветка. Это решает проблему