Como Excluir um Branch no Git Localmente e Remotamente

Uma das características mais fortes do Git são seus branches leves. Eles permitem que você trabalhe em estágios paralelos de desenvolvimento com eficiência. Um desenvolvedor pode até criar branches individuais para bugs separados. Tanto no tempo quanto no espaço, os ramos quase não têm custo.

Muitos fluxos de trabalho git lidam com branches de longo prazo e temporários. Portanto, geralmente é necessário excluir ramificações durante o desenvolvimento. Ocasionalmente, há necessidade de excluir branches compartilhados de um servidor remoto, bem como branches locais.

Por que excluir uma filial?

Primeiro, se você ainda está se familiarizando com o git , há uma boa chance de criar um branch e então decidir que não precisa. Ou você pode estar experimentando galhos e querendo limpar depois de você mesmo. Isso é bom, já que ramificar no git é uma operação leve. É muito rápido e usa o espaço em disco de forma eficiente.

Como resultado, muitos fluxos de trabalho de desenvolvimento git encorajam ramificações, mesmo para tarefas muito pequenas ou curtas. Por exemplo, uma estratégia comum é criar um branch para uma única correção de bug. Isso é verdadeiro mesmo se envolver apenas um único autor fazendo uma alteração de uma linha em um único arquivo.

Por esses motivos, criar e excluir ramificações são operações que precisam ser bem compreendidas. Você pode acabar excluindo ramificações durante um fluxo de trabalho de desenvolvimento típico.

Um repositório de amostra com ramificações

Os exemplos a seguir referem-se a um repositório de amostra com a seguinte estrutura:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

Observe que cada ramificação local possui uma ramificação upstream correspondente do remote: origin .

Excluindo uma ramificação usando a linha de comando

A sintaxe de comando básica para excluir um branch é:

 git branch (-d | -D) [-r] <branchname>...

A forma mais simples do comando exclui um branch local, desde que todas as suas alterações tenham sido mescladas:

 $ git branch -d dev

Você não pode excluir o branch que está ativo; se você tentar fazer isso, receberá uma mensagem como esta:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Quando tudo der certo, você verá uma mensagem de confirmação:

 Deleted branch dev (was 1ae41e8).

Se você excluir um branch que existe apenas localmente, com alterações não mescladas, você perderá essas alterações. Portanto, o git se recusará a excluir um branch em tal situação, por padrão:

 error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

Conforme informa a mensagem de erro, você pode forçar a exclusão com o sinalizador -D . No entanto, o git permitirá que você exclua um branch local não mesclado se ele existir remotamente:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

Excluir um branch remoto é bem diferente. Você usará o comando git push junto com a sinalização -d para excluir. Depois disso, forneça o nome do controle remoto (geralmente origem ) e o nome do ramo:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

Excluindo ramificações locais e remotas com o GitHub Desktop

Ao contrário do programa git de linha de comando, o aplicativo de desktop do GitHub permite apenas que você exclua o branch ativo. Você pode realizar esta ação por meio do menu Ramificação , selecionando a opção Excluir e confirmando:

O GitHub Desktop não permite que você exclua o branch padrão – por exemplo, main – embora o próprio git suporte isso. Se o branch padrão for aquele que está ativo no momento, o aplicativo desativa a ação do menu.

Se o branch também representa um branch remoto, o GitHub Desktop oferece a opção de excluí-lo do remoto também:

Excluindo ramificações usando GitKraken

O GitKraken exibe os branches locais e remotos do seu repositório na barra lateral esquerda. Você deve excluir cada um separadamente .

Passe o mouse sobre o nome do ramo apropriado e clique no menu Ações do ramo que se parece com três pontos verticais. No menu, selecione Excluir <nome do ramo> :

Você verá uma mensagem de confirmação informando que esta é uma operação destrutiva. Você pode confirmar que deseja continuar com o botão Excluir :

Refletindo o comportamento padrão do programa de linha de comando git, você deve primeiro mudar para um branch diferente daquele que está excluindo . Caso contrário, você verá uma mensagem de erro:

Excluindo ramificações locais e remotas usando o Tower

Excluir uma ramificação com o Tower é muito semelhante a excluir uma ramificação com GitKraken. Os ramos locais e remotos são mostrados em um painel do lado esquerdo. Clique com o botão direito em qualquer ramo e selecione a opção Excluir no menu de contexto:

Uma diferença importante é que um branch remoto pode ser excluído junto com seu branch local, durante a confirmação:

Excluindo um Branch no GitHub

O GitHub atua apenas como uma fonte remota, portanto, os branches lá são remotos por padrão. Se você excluir um branch usando o site do GitHub, terá que excluir o branch local correspondente usando um dos outros métodos aqui.

Assim como acontece com o aplicativo GitHub Desktop, o site do GitHub não permitirá que você exclua o branch padrão. A opção simplesmente não aparece. Excluir um branch é simples, no entanto. Na página de código do repositório, clique no link branches , localize o branch a ser excluído e clique no ícone Delete this branch , que se parece com uma lata de lixo:

Esteja ciente de que não há verificações para alterações não mescladas, portanto, no GitHub, o branch será simplesmente excluído imediatamente. No entanto, como ele sempre representará um branch remoto, esse deve ser o comportamento que você está esperando.

Observe que, após a exclusão, você verá um botão para restaurar o ramo. No entanto, esse é apenas um recurso útil para desfazer, caso você clique no ícone de exclusão acidentalmente. Não confie nisso, porque assim que você atualizar ou navegar para fora da página, você perderá a opção!

Excluindo Ramificações Locais e Remotas no Bitbucket

O Bitbucket, como o GitHub, não permitirá que você exclua o branch padrão. O Bitbucket chama isso de ramificação principal nas configurações do Repositório . Você pode excluir qualquer outro ramo listado na guia Ramos , por meio de seu menu Ações correspondente:

Você também pode excluir mais de um branch de uma vez se estiver fazendo uma grande operação de limpeza:

A exclusão de ramos faz parte de um fluxo de trabalho típico do Git

Ramificações Git podem complicar seu fluxo de trabalho, especialmente com branches locais, remotos e de rastreamento. Mas, para um desenvolvimento simples do dia a dia, é provável que você crie e exclua branches locais o tempo todo. Este é um aspecto central de um fluxo de trabalho git típico ao qual você deve se acostumar.