De vez em quando eu costumo criar uma branch para depois começar a mexer no código, e quando percebo, vejo que o que estou fazendo não tem nada a ver com o nome que eu dei para aquela branch.
Então como renomear uma branch? De acordo com a documentação, para renomear uma branch (ramo) local no git só existe um comando: git branch -m "novo-nome".
Simples, não? Porém existem outras coisas a se aprender sobre a alteração do nome de uma branch.
Como renomear uma branch local
Se você já estiver na branch que deseja alterar o nome, utilize:
git branch -m "novo-nome"
Se você quer alterar o nome de outra branch, enquanto está na master, por exemplo, utilize:
git branch -m "nome-antigo" "novo-nome"
Em alguns casos, você pode querer alterar apenas a capitalização de alguma letra. Para isso, você deve usar git branch -M
com o M maiúsculo. De acordo com a documentação (git branch -h
), este parâmetro altera o nome, mesmo que este já exista. Tome cuidado apenas para não usar -M e sobrescrever outra branch importante por engano.
Como renomear uma branch remota
Infelizmente não existe um comando que altere o nome da branch remota diretamente no Github, Bitbucket, etc., mas nós podemos remover e reenviar a branch com o nome desejado.
Primeiramente, devemos alterar o nome da nossa branch local como explicitado anteriormente:
git branch -m "novo-nome"
Atenção: O método abaixo exclui a branch remota. Tenha certeza de que possui a última versão da branch remota em seu repositório local para poder fazer o push dela logo em seguida.
Obs: Substitua em "nome-antigo" pelo nome da sua branch antes de renomear.
git push origin :nome-antigo
O comando abaixo envia a branch renomeada para o repositório remoto
git push --set-upstream origin novo-nome
É isso aí. Tanto a sua branch local quanto remota foram renomeadas.
Mas e sobre o jeito certo?
Sobre o título deste artigo, me refiro à como nomear uma branch da forma mais correta de acordo com as convenções e práticas comuns.
Uma convenção na prática é um acordo com o seu time e com você mesmo.
É normal ter essa dúvida ao nomear uma branch. E para não ter vergonha de enviar um pull request, eu sempre procuro seguir uma certa lógica.
Existe a prática comum de mantermos a branch "master" sempre com o código em produção, enquanto usamos uma branch "dev" onde mesclamos todo o código de outras branches intermediárias para testar tudo antes de colocarmos em produção.
Mas além de não podermos utilizar espaços e alguns caracteres especiais, não existem convenções definitivas para nomenclatura de uma branch onde podemos dizer "isso aqui tá errado" e "isso aqui tá certo", mas recomenda-se algumas boas práticas:
- Usar sempre letras minúsculas. O padrão já indica - master
- Usar hífens para separar palavras. Ex: product-landing-page
- Usar barras para subdivisões em um escopo maior. Ex: blog/comments, blog/article-list
- Pontos para dividir versões quando for o caso - Muitos projetos open source usam essa convenção para guardar versões antigas do código. Ex: source-v1.2.2