Pesquisa de site

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

Artigos relacionados: