Alterar um nome de filial em um repositório Git

295

Como renomear um ramo existente em um repositório Git?

Quero que o ramo atual tenha um novo nome.

Alex
fonte
2
aceite uma resposta @Alex ou diga por que você não deseja aceitá-la.
Charlie Parker
1
@CharlieParker Provavelmente, isso tem algo a ver com o fato de que essa era a única pergunta de Alex, e ele provavelmente não está conectado desde: "Visto pela última vez em 3 de fevereiro de 11 às 21:29"
santo-amarelo
13
@JB OMG, você está dizendo que algo pode ter acontecido com ele ??? !!!!!!!!!
abbood
1
Poderia a resposta altamente votada ser aceita?
Steve Chambers
Possível duplicata de Como renomear uma ramificação Git local?
Vineet Jain

Respostas:

465

Supondo que você esteja atualmente no ramo que deseja renomear:

git branch -m newname

Isso está documentado no manual para git-branch, que você pode visualizar usando

man git-branch

ou

git help branch

Especificamente, o comando é

git branch (-m | -M) [<oldbranch>] <newbranch>

onde os parâmetros são:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> é opcional, se você deseja renomear a ramificação atual.

Richard Fearn
fonte
10
Ou git branch -m other-branch renamed-other-branchse você não é.
Mipadi # 5/10
32
Além disso, se você enviou o ramo antigo para um controle remoto, é possível excluí-lo com git push origin :branchname. Isso permitiria empurrar o novo e excluir o antigo, renomeando-o essencialmente no controle remoto.
Jonathan
1
@mipadi, ele cria o novo ramo e não exclui o anterior.
Mohammad Arif
ramificação git (-m | -M) [<filial antiga>] <nova filial> Não funcionou para mim, fornecendo o erro de sintaxe.
Mohammad Arif
@MohammedArif Com -m, ele renomeia o velho ramo, por isso não exclua a anterior.
Richard Fearn
177

Se você está atualmente no ramo que deseja renomear:

git branch -m new_name 

Se não:

git branch -m old_name new_name 

Você pode verificar com:

git branch -a

Como você pode ver, apenas o nome do local foi alterado Agora, para alterar o nome também no controle remoto, você deve:

git push origin :old_name

Isso remove a ramificação e carrega-a com o novo nome:

git push origin new_name

Fonte: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

javierdvalle
fonte
13
Eu acho que essa é a resposta correta, a resposta altamente votada por Richard Feam cobre apenas repo local, esta remota.
user1145404
4
Concordo com o comentário acima, esta resposta foi mais completa no meu caso. Além disso, quando enviei confirmações adicionais para a ramificação remota depois de executar todas as etapas mencionadas nesta resposta, o git tentou enviar old_namenovamente para a ramificação. Felizmente, git também forneceu uma correção na linha de comando: git-branch --unset-upstream. Depois disso, todas as confirmações enviadas foram para a new_nameramificação remota.
Hans Roerdinkholder
2
tenha cuidado para que desta maneira você tenha perdido a faculdade de empurrar, git pushporque possui um aviso que diz Your branch is based on 'old_name, but the upstream is gone.A git push -u origin new_nameresolvê-lo.
Netalex