Если вы хотите переименовать ветку, указав на любую ветку, выполните:
git branch -m <oldname> <newname>
Если вы хотите переименовать текущую ветку, вы можете сделать:
git branch -m <newname>
Если вы хотите нажать локальную ветвь и сбросить вышестоящую ветку:
git push origin -u <newname>
И, наконец, если вы хотите удалить удаленную ветку:
git push origin --delete <oldname>
Способ запомнить: -m
означает "перемещение" (или mv
), то есть то, как вы переименовываете файлы. Также может помочь добавление псевдонима. Для этого запустите следующее:
git config --global alias.rename 'branch -m'
Если вы используете Windows или другую файловую систему без учета регистра и в имени изменяются только заглавные буквы, вам нужно использовать -M
, иначе git выдаст ветка уже существует ошибка:
git branch -M <newname>
Я действительно хотел знать, обязательно ли это повлияет на удаленную ветку, когда / если вы нажмете
@PandaWood: он добавит новую ветку при нажатии, но не удалит старую ветку. Если вы используете
git push -f --mirror
, тогда он переименует ветку на удаленном компьютере, но вы должны использовать этот метод только в том случае, если удаленный компьютер просто должен быть копией вашего текущего репозитория. См. Также этот вопрос: coderhelper.com/questions/1526794/git-rename-remote-branch@PandaWood, это зависит от того, как настроен
push.default
. По умолчанию (matching
) он отправляется на удаленный компьютер, имя которого совпадает. Вам нужно будет выполнитьgit push origin <newname>:<oldname>
или вы создадите новую удаленную ветку. Однако, если дляpush.default
установлено значениеupstream
, вы можете использоватьpush origin head
, и на удаленном компьютере все перейдет к старому имени.Длинное имя параметра
-m
---move
, например,git branch --move master
переименовывает текущую ветвь в «главную».интересно, похоже, что переименование временно нечувствительно к регистру даже на OSX. Начиная с FB12.show_hide_cols , -m fb12.show_hide_cols получил ошибку существующей ветки. Но -m fb12.show_hide_col , затем -m fb12.show_hide_cols привело меня туда, куда я хотел. после этого git branch показывает только одну переименованную ветку, как я и хотел.
После этого вы также должны запустить
git push origin :<old_name> <new_name>
, чтобы обновить имена удаленных веток.Nitpicking: файловая система Windows (NTFS) фактически чувствительна к регистру. Он предназначен для систем, которые выбирают доступ к файловой системе без учета регистра. Windows делает это.
Возможно ли, что старая ветка не удаляется в Windows, если я использую -m и ту же ветку с двумя именами, и если я фиксирую в новой ветке, она идет дальше от более старой coderhelper.com/questions/61367248/…
Вы не потеряете изменения (неустановленные / измененные файлы) при выполнении этого локально. Скажем, например, вы работаете над новой веткой ... тогда, прежде чем зафиксировать свои изменения, вы понимаете, что то, что вы на самом деле сделали, не соответствует имени ветки. Вы можете смело переименовать его, прежде чем вносить изменения. Таким образом, когда он сливается, имена обретают смысл позже. - Просто хотел добавить, что это не было упомянуто на случай, если кто-то еще задается вопросом, что произойдет :)