Renomear branch no Git: local, remota e padrão do GitHub | We.Inc
Gere os comandos exatos para renomear uma branch do Git localmente, enviar o novo nome, apagar a branch remota antiga e corrigir o rastreamento do upstream, além de renomear a main no GitHub.
Para renomear a branch em que você está, rode git branch -m novo-nome. Para outra branch, rode git branch -m nome-antigo novo-nome. O Git não consegue renomear uma branch em um remoto, então envie o novo nome com git push -u origin novo-nome e depois apague o antigo com git push origin --delete nome-antigo.
Comandos de renomear por situação
Situação
Comando
Renomear a branch atual
git branch -m new-name
Renomear outra branch
git branch -m old-name new-name
Sobrescrever um nome existente
git branch -M old-name new-name
Publicar o novo nome e rastreá-lo
git push -u origin new-name
Remover o nome antigo do remoto
git push origin --delete old-name
Corrigir um clone depois que outra pessoa renomeou
git branch -u origin/new-name new-name
Renomear localmente é um comando só; o remoto é onde as pessoas travam, porque uma branch remota não pode ser renomeada no lugar, apenas substituída. Preencha abaixo o nome antigo e o novo para receber os comandos do seu caso, incluindo o que os colegas de equipe precisam rodar depois e os passos extras quando a branch é a padrão no GitHub.
Informe o nome antigo, o novo nome e o remoto, geralmente origin.
Marque se você está nessa branch e se ela já existe no remoto.
Rode os comandos em ordem; o gerador só adiciona o push, o delete e a correção do upstream quando eles se aplicam.
Envie o bloco dos colegas para qualquer outra pessoa que tenha um clone.
Envie o novo nome antes de apagar o antigo, para que um pull request aberto ou uma execução de CI nunca veja a branch sumir por completo.
No GitHub, renomear pela página de branches é melhor para branches compartilhadas: isso redireciona os pull requests abertos e as URLs antigas para você.
Procure o nome antigo nos seus workflows de CI, nas configurações de deploy e nos scripts. O GitHub observa que os workflows do Actions que o referenciam não são atualizados.
git branch -m também renomeia o reflog da branch, então o histórico local de movimentos dela acompanha o novo nome.
Perguntas frequentes
Posso renomear uma branch remota diretamente?
Não com o Git puro. Você envia a branch com o novo nome e apaga o nome antigo. A interface web do GitHub consegue renomear uma branch no servidor, o que também mantém os pull requests e os links funcionando.
Qual é a diferença entre -m e -M?
-m se recusa a agir se já existir uma branch com o novo nome. -M é a forma curta de --move --force e a substitui. Nenhum dos dois renomeia uma branch que esteja em checkout em outra worktree do mesmo repositório.
Como renomeio master para main no GitHub?
No repositório no GitHub, abra Branches, escolha renomear na master e digite main. Renomear a branch padrão exige acesso de admin. Depois, todos rodam os quatro comandos que o GitHub mostra: renomear localmente, fazer fetch, definir o upstream e atualizar o HEAD do origin.
Por que o git push ainda vai para o nome antigo da branch?
A branch renomeada ainda rastreia o upstream antigo. Faça o push com -u uma vez, ou rode git branch -u origin/novo-nome, e os pushes e pulls seguintes passam a usar o novo nome.
O que o GitHub atualiza quando você renomeia por lá
O GitHub redireciona as URLs web que contêm o nome antigo, move a proteção de branch para o novo nome e redireciona os pull requests abertos e os rascunhos de release baseados nela. As URLs de arquivos raw não são redirecionadas.
Quem tem permissão de escrita pode renomear branches comuns; renomear a branch padrão ou uma branch protegida exige direitos de admin, e os rulesets da organização podem restringir isso ainda mais.
Evitando nomes que quebram depois
Use apenas letras minúsculas, dígitos, hifens e barras para agrupar, como fix/login-timeout. O Git rejeita nomes com espaços, dois pontos seguidos, um ponto ou barra no final, um hífen no início ou qualquer um dos caracteres ~ ^ : ? * [ e barra invertida.
Renomeação completa, do início ao fim
Renomear em todo lugar uma branch já enviada
Renomeia localmente, publica o novo nome com rastreamento e depois remove a branch remota antiga.
O que os colegas rodam depois de uma renomeação no GitHub
Estes são os passos que o GitHub lista para atualizar um clone existente, com a limpeza opcional de branches remotas obsoletas.
Gerador de comandos para renomear
Nome atual da branch
Novo nome da branch
Remoto
Estou nesta branch agora
A branch existe no remoto
Seus comandos
Os colegas rodam
Nada a avisar aos colegas: a branch nunca foi enviada.
Esse não é um nome de branch válido. Veja as regras de nomes mais abaixo na página.