O Git é uma forma fantástica de implementar controle de versão em um projeto de codificação — tão fantástica, de fato, que quase se tornou a opção obrigatória.

A ideia é criar branches duplicadas do seu repositório principal, trabalhar no código e depois mesclar as alterações de volta com o restante. Isso significa que você terá várias branches antigas dentro do seu repositório. Embora o tamanho desses arquivos seja frequentemente pequeno, você ainda vai querer executar um git delete em uma branch local para manter tudo organizado.

A boa notícia é que isso não exige muito esforço para ser realizado. No entanto, você precisará considerar a melhor abordagem dependendo se você mesclou as alterações, bem como o que fazer se receber um erro durante o processo de exclusão. Você pode até precisar restaurar uma branch que deletou. Cada um desses cenários exige diferentes habilidades e comandos.

Neste tutorial, vamos mostrar como realizar um “git delete” em uma branch local. Mas primeiro, vamos falar sobre algumas das razões pelas quais você pode querer deletar branches locais no Git.

O que é uma branch do Git?

Repositórios Git são uma coleção de branches — duplicatas do código principal. Na verdade, você não pode ter um repositório Git funcionando sem uma branch.

Geralmente, você terá um repositório principal (os nomes nominais são “main” e “trunk”). Este conterá o código de produção em funcionamento que você não vai querer editar. Em vez disso, você criará uma branch duplicada do repositório principal e fará as alterações necessárias nela. Quando for hora de incorporar essas alterações de volta ao código principal, você fará a verificação e a mesclagem.

As branches permitem que todos em uma equipe colaborem no mesmo projeto, independentemente um do outro. Também não há perigo de fazer uma alteração no código em funcionamento ou interferir em outras alterações no meio tempo.

No entanto, você também precisará realizar um git delete em uma branch local. Esta será uma ação regular para você, e existem várias razões sólidas para fazer isso.

Por que remover branches no Git?

Seu código de produção estará na branch principal. Esta é a única branch que tem alguma permanência.

Em contraste, quase todas as outras branches que você criar terão uma vida útil temporária. Depois de concluir seu trabalho, você fará o commit das alterações e considerará mesclá-las com a branch principal, possivelmente em um repositório on-line como o GitHub.

Isso significa que você frequentemente terá várias branches abertas de uma vez, dependendo do projeto e da equipe. No entanto, uma vez que você finalize a mesclagem, essas branches não desaparecem.

Assim, existem algumas razões pelas quais você gostaria de deletar uma branch local do Git:

  • Organização geral: Em casa, quando você termina de cozinhar, lava os utensílios e os guarda. O mesmo acontece ao trabalhar com um repositório Git: quando você termina seu trabalho, mescla as alterações e deleta qualquer branch que não precisa mais. Isso também torna seu projeto e repositório mais fáceis de navegar.
  • Tamanho do arquivo do repositório: Embora os repositórios Git sejam geralmente pequenos o suficiente para serem inconsequentes para o tamanho de um projeto, você ainda deve ficar de olho nele. Uma forma de reduzir o tamanho de um repositório é deletar branches que você não precisa.
  • Desempenho potencial: Mesmo que seu código principal seja eficiente, uma branch pode não ser, já que você está trabalhando nela. Por isso, você vai querer manter o número de branches abertas no mínimo. Caso contrário, isso pode introduzir um desempenho ruim para sua equipe até que você prepare e ajuste um projeto.

Como você verá mais tarde, realizar um git delete em uma branch local é simples, na maior parte do tempo. No entanto, é uma boa ideia entender o que acontece nos bastidores quando se trata de usar este comando, pois ele não eliminará tudo relacionado à branch do seu repositório.

O que acontece quando você deleta uma branch local no Git?

Em um nível técnico, uma branch é apenas um ponteiro para um commit específico – ou seja, uma parte do código que você quer integrar à branch principal. Então, quando você deleta uma branch local no Git, os commits ainda continuam lá.

Vamos falar mais tarde sobre como recuperar branches. Por enquanto, saiba que existem dois tipos de mudanças:

  • Mudanças mescladas: Quando você mescla uma branch com a principal, o código fica atualizado. Tecnicamente, é como se você movesse o apontador da branch principal para se alinhar com a secundária.
  • Mudanças não mescladas: Se você não mescla, fica com uma branch desatualizada em relação à principal.

Isso é algo que abordaremos com mais detalhes mais tarde. De qualquer forma, isso levanta outro bom ponto sobre quando deletar branches.

Quando deletar uma branch local no Git?

Dado os riscos de deletar uma branch com alterações não mescladas, é importante não executar um git delete em uma branch local até que você faça uma mesclagem de código. Isso garantirá que cada branch tenha uma referência atualizada e, por extensão, o código mais atual disponível.

Também é uma boa ideia garantir que você não precisará de nenhum dos commits dentro de uma branch temporário antes de realizar um git delete. Embora você possa recuperar branches até certo ponto, esse é um trabalho que você não vai querer fazer quando necessário. Falaremos mais sobre isso mais tarde.

Como executar um “Git Delete” em uma branch local

Ao longo deste tutorial, mostraremos como executar um git delete em uma branch local. Também vamos abordar o que fazer com alterações não mescladas.

A partir daí, falaremos sobre os erros que você pode encontrar e como restaurar uma branch local deletado.

No final, daremos uma breve olhada em branches remotos e como deletá-los também.

Pré-requisitos

O próprio Git oferece um conjunto simples de comandos e te dá bastante autonomia sem a necessidade de abrir um livro didático. Mesmo assim, existem várias formas de acessar um repositório Git, dependendo do seu aplicativo e editor de código escolhidos.

Embora você possa encontrar uma configuração de “cliques mínimos” em uma interface gráfica dedicada (GUI), como GitKraken ou Sublime Merge, vamos manter as coisas simples e usar ferramentas integradas ao sistema operacional.

Para seguir adiante, você vai precisar do seguinte:

  • Acesso à linha de comando: Nossos exemplos usarão macOS e iTerm. Entretanto, você pode usar Cmder para Windows, o Terminal padrão no MacOS, o mesmo no Linux, e outros.
  • Acesso aos seus arquivos específicos: Você vai querer ter seus arquivos de projeto em seu computador local, porque sem eles, não há nada que você possa fazer!
  • Conhecimento da linha de comando: Ajudará a ter algum conhecimento da linha de comando – especificamente, os comandos para ajudá-lo a navegar em seus arquivos, juntamente com algum entendimento de como a linha de comando funciona.

Na realidade, se você tem um projeto com um repositório Git e uma janela de Terminal à sua escolha, isso é tudo de que você precisa.

Executando um “git delete” básico

Primeiramente, vamos supor que você queira deletar uma branch com alterações mescladas. Essa é a prática mais direta e típica.

No entanto, você pode precisar executargit branch -a ou git branch --list para visualizar todos as branches e encontrar o certo no seu repositório primeiro:

A partial Terminal window with a macOS gradient background, showing the user listing the current branches in a local repository.
Listando branches em um repositório Git local.

Aqui está o comando que você precisará para deletar uma branch:

git branch -d branch-name

Você vai querer usar o nome específico da branch em vez do nosso espaço reservado.

A flag -d aqui significa “deletar” e, em letras minúsculas, você tem alguma proteção contra a exclusão de uma branch com mudanças não mesclada.

Se você tentar deletar uma branch não mesclado, verá um erro (mais precisamente, um aviso):

A partial Terminal window on macOS, with a gradient background. The user runs a command to delete a branch, but an error appears reading,
Tentando deletar uma branch com alterações não mescladas em um repositório Git.

No entanto, você pode capitalizar a flag usando -De ignorar esse aviso de proteção. Isso permite que você delete uma branch com alterações não mescladas.

Note que você não receberá uma confirmação para deletar a branch se estiver usando a versão em maiúscula, então é uma flag que você vai querer usar com cuidado.

O que causa o erro “Cannot Delete Branch”?

Porque deletar uma branch do seu repositório é uma decisão grande e sem uma solução fácil, o Git exibe erros se você cometer um erro.

Por exemplo, às vezes você tentará realizar um git delete em uma branch local e verá um erro “Cannot delete branch”:

A partial Terminal window with a gradient macOS background. The user is listing the current branches in the repo, checking out one branch, then trying to delete it, which throws an error. It reads,
Tentando deletar uma branch em um repositório Git e vendo um erro.

A razão simples para isso está relacionada com sua localização atual no repositório Git. Você não pode deletar uma branch que você fez “checkout”.

A solução aqui é mudar para uma branch diferente.

Por essa razão, sempre sugerimos que você faça o checkout para a branch main. Dessa forma, você receberá um erro se tentar deletar a branch main e também poderá remover qualquer outro branch no repositório.

Como restaurar uma branch local deletado no Git

Dado que um commit permanecerá após você deletar uma branch local, existe uma pequena chance de recuperar uma branch após realizar um git delete. No entanto, é mais trabalhoso do que mesclar essas mudanças primeiro. Nessa situação, você saberá que não precisará mais de uma branch.

Cada commit usa um número de hash, que age como sua referência. Você pode usar esse hash para fazer checkout e criar um novo branch:

A partial Terminal window in macOS showing a user running the "git rev-parse HEAD" and "git rev-parse --short HEAD" commands. They both show the reference hash for the latest commit to the current repo, with the first command showing the full hash, and the latter showing the short version.
Mostrando ambas as versões curtas e longas de um hash de referência para um commit no Git.

No entanto, se você não souber o hash de uma branch deletado, você pode usar o comando reflog. Esses “registros de referência” são muito parecidos com os que você encontrará em aplicativos como o DevKinsta.

Embora usar git reflog seja uma conversa para outro artigo inteiramente, você pode usar a funcionalidade básica para encontrar o hash de commits antigos. Se você executar git reflog, você verá uma lista de commits:

A partial Terminal window in macOS showing the user running a "git reflog" command. It displays a list of recent commits, the corresponding hashes in yellow, the action the user performed (such as "checkout" or "commit",) and the specific commit description.
Uma janela de Terminal executando o comando git reflog e exibindo os resultados.

A primeira coluna de hashes aqui permite que você faça o checkout do commit e crie uma nova branch. Por exemplo:

 

git checkout 5744ff6
git branch f9d2db5

No entanto, essa não é uma forma infalível de recuperar uma branch deletada no Git.

Em alguns casos, não haverá nenhum commit no reflog e nenhuma referência HEAD para o próprio commit. É por isso que é melhor trabalhar com suas branches de uma forma mais segura, mesclando as alterações antes de executar um git delete em uma branch local.

Trabalhando com branches remotas no Git

Ao executar um git delete em uma branch local, você frequentemente terá um repositório remoto associado. Isso será especialmente verdadeiro se você baixar seu site para a Kinsta usando Git.

Esse repositório não será atualizado junto com o seu repositório local quando você fizer alterações, e isso também é válido quando você deleta uma branch local.

No entanto, tanto o GitHub quanto o GitLab têm o mesmo processo para deletar uma branch remota no Git. É uma abordagem semelhante a qualquer outro push “upstream”.

Aqui está o comando:

git push remote-name -d remote-branch

Para o remote-name, a maioria dos repositórios que vemos usa “origin”. A referência remote-branch será a mesma da branch local (a menos que você renomeie uma branch local, o que está fora do escopo deste artigo).

À parte, você pode ver todas as branches — locais e remotas — usando git branch -a. Se você quiser ver apenas as branches remotas, pode usar git branch -r.

Depois de executar o comando, você verá uma mensagem de confirmação, momento em que deverá executar git branch -a novamente para verificar se tudo foi removido como esperado.

Resumo

O Git é uma das poucas ferramentas que oferecem imenso poder por baixo do capô usando comandos legíveis e intuitivos. Isso também vale para remover branches que você não precisa mais na sua máquina local. No entanto, você ainda precisará ter cuidado ao executar um git delete em uma branch local.

Isso porque, se você tentar deletar alterações não mescladas, receberá um erro ou removerá algo que afetará o trabalho futuro do seu projeto. Além disso, você também precisará deletar a branch remota. Ambos os seus repositórios locais e remotos precisam que você faça uma boa manutenção para manter o desempenho alto e o tamanho do arquivo no mínimo.

Embora você possa estar por conta própria se deletar uma branch Git por engano, a Kinsta te apoia no que diz respeito à Hospedagem de Aplicativos. A plataforma de hospedagem da Kinsta oferece a você a capacidade de se conectar e implantar com seus repositórios GitHub em apenas alguns minutos. Além disso, você terá acesso às máquinas C2 do Google e à rede de nível premium, juntamente com nossa integração com o Cloudflare, para levar seus aplicativos ao próximo nível de velocidade e segurança.