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.


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

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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.