Como renomear um branch, excluir um branch e encontrar o autor de um branch no Git
Torne-se um especialista nas tarefas Git mais comuns para gerenciar filiais locais e remotas.
Um dos principais pontos fortes do Git é sua capacidade de “bifurcar” o trabalho em diferentes ramos.
Se você é a única pessoa que usa um repositório, os benefícios são modestos, mas quando você começa a trabalhar com muitos outros colaboradores, a ramificação é essencial. O mecanismo de ramificação do Git permite que várias pessoas trabalhem em um projeto, e até mesmo no mesmo arquivo, ao mesmo tempo. Os usuários podem introduzir recursos diferentes, independentes uns dos outros, e depois mesclar as alterações de volta em um branch principal. Um branch criado especificamente para um propósito, como adicionar um novo recurso ou corrigir um bug conhecido, às vezes é chamado de ramificação de tópico.
Depois de começar a trabalhar com filiais, é útil saber como gerenciá-las. Aqui estão as tarefas mais comuns que os desenvolvedores realizam com ramificações Git no mundo real.
Renomeie um branch usando Git
Renomear uma ramificação de tópico é útil se você nomeou uma ramificação incorretamente ou deseja usar a mesma ramificação para alternar entre diferentes bugs ou tarefas após mesclar o conteúdo na ramificação principal.
Renomear uma filial local
1. Renomeie a filial local:
$ git branch -m <old_branch_name> <new_branch_name>
Claro, isso apenas renomeia sua cópia do branch. Se a ramificação existir no servidor Git remoto, continue nas próximas etapas.
2. Envie o novo branch para criar um novo branch remoto:
$ git push origin <new_branch_name>
3. Exclua a ramificação remota antiga:
$ git push origin -d -f <old_branch_name>
Renomeie o branch atual
Quando a ramificação que você deseja renomear for a ramificação atual, não será necessário especificar o nome da ramificação existente.
1. Renomeie o branch atual:
$ git branch -m <new_branch_name>
2. Envie o novo branch para criar um novo branch remoto:
$ git push origin <new_branch_name>
3. Exclua a ramificação remota antiga:
$ git push origin -d -f <old_branch_name>
Exclua filiais locais e remotas usando Git
Como parte de uma boa higiene do repositório, geralmente é recomendado excluir um branch depois de garantir que o conteúdo foi mesclado no branch principal.
Excluir uma filial local
Excluir uma ramificação local exclui apenas a cópia dessa ramificação que existe em seu sistema. Se o branch já tiver sido enviado para o repositório remoto, ele permanecerá disponível para todos que trabalham com o repositório.
1. Faça check-out do branch central do seu repositório (como main ou master):
$ git checkout <central_branch_name>
2. Liste todas as filiais (locais e remotas):
$ git branch -a
3. Exclua a filial local:
$ git branch -d <name_of_the_branch>
Para remover todas as ramificações do tópico local e manter apenas a ramificação principal:
$ git branch | grep -v main | xargs git branch -d
Excluir uma filial remota
A exclusão de uma ramificação remota exclui apenas a cópia dessa ramificação que existe no servidor remoto. Se você decidir que não deseja excluir o branch, poderá enviá-lo novamente para o controle remoto, como o GitHub, desde que ainda tenha sua cópia local.
1. Faça check-out do branch central do seu repositório (geralmente main ou master):
$ git checkout <central_branch_name>
2. Liste todas as filiais (locais e remotas):
$ git branch -a
3. Exclua a ramificação remota:
$ git push origin -d <name_of_the_branch>
Encontre o autor de uma ramificação de tópico remoto usando Git
Se você for o gerenciador do repositório, talvez seja necessário fazer isso para informar ao autor de uma ramificação não utilizada que ela deve ser excluída.
1. Faça check-out do branch central do seu repositório (como main ou master):
$ git checkout <central_branch_name>
2. Exclua referências de ramificação para ramificações remotas que não existem:
$ git remote prune origin
3. Liste o autor de todas as ramificações de tópicos remotos no repositório, usando a opção --format
junto com seletores especiais (neste exemplo, %(authorname)
e %(refname)
para autor e nome da filial) para imprimir apenas as informações desejadas:
$ git for-each-ref --sort=authordate --format='%(authorname) %(refname)' refs/remotes
Exemplo de saída:
tux refs/remotes/origin/dev
agil refs/remotes/origin/main
Você pode adicionar formatação adicional, incluindo codificação por cores e manipulação de strings, para facilitar a leitura:
$ git for-each-ref --sort=authordate \
--format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)%(align:25,left)%(color:yellow) %(authorname)%(end)%(color:reset)%(refname:strip=3)' \
refs/remotes
Exemplo de saída:
01/16/2019 03:18 PM tux dev
05/15/2022 10:35 PM agil main
Você pode usar grep para obter o autor de um ramo de tópico remoto específico:
$ git for-each-ref --sort=authordate \
--format='%(authorname) %(refname)' \
refs/remotes | grep <topic_branch_name>
Fique bom em ramificação
Existem nuances em como a ramificação do Git funciona, dependendo do ponto em que você deseja bifurcar a base de código, como o mantenedor do repositório gerencia ramificações, esmagamento, rebase e assim por diante. Aqui estão três artigos para leitura adicional sobre este tópico:
- Explicando ramificações do Git com uma analogia LEGO, por Seth Kenlon
- Meu guia para usar o comando Git push com segurança, por Noaa Barki
- Um guia para ramificação do Git, por Kedar Vijay Kulkarni