Resolvendo o Erro "Cannot Delete Branch Checked Out"
Agora que entendemos por que não podemos excluir um branch que está verificado (checked out), vamos aprender como excluir um branch corretamente, primeiro alternando para um branch diferente.
Alternar para um Branch Diferente
Antes de podermos excluir o branch new-feature, precisamos alternar para um branch diferente. Vamos voltar para o branch master:
git checkout master
Você deve ver uma saída semelhante a:
Switched to branch 'master'
Vamos verificar se agora estamos no branch master:
git branch
A saída deve mostrar:
bugfix-branch
feature-branch
* master
new-feature
O asterisco agora está ao lado de master, indicando que é nosso branch atual.
Excluindo o Branch com Segurança
Agora que estamos em um branch diferente, podemos excluir com segurança o branch new-feature:
git branch -d new-feature
Se o branch tiver alterações que não foram mescladas (merged), o Git pode impedir a exclusão com uma mensagem como:
error: The branch 'new-feature' is not fully merged.
If you are sure you want to delete it, run 'git branch -D new-feature'.
Este é outro recurso de segurança do Git. A flag -d só exclui branches que foram totalmente mesclados, enquanto -D força a exclusão, independentemente do status da mesclagem. Como fizemos alterações no branch new-feature que não foram mescladas no master, precisamos usar a flag -D:
git branch -D new-feature
Você deve ver uma saída confirmando a exclusão:
Deleted branch new-feature (was xxxxxxx).
Verificando a Exclusão do Branch
Vamos verificar se o branch foi excluído:
git branch
A saída agora deve mostrar:
bugfix-branch
feature-branch
* master
O branch new-feature não está mais listado, confirmando que foi excluído com sucesso.
Compreendendo a Exclusão de Branch
Quando você exclui um branch no Git, você está apenas excluindo o ponteiro para uma série de commits. Os próprios commits permanecem no repositório Git até que a coleta de lixo (garbage collection) seja executada. Isso significa:
- Se você excluir acidentalmente um branch, muitas vezes poderá recuperá-lo
- Excluir um branch não exclui o trabalho feito nesse branch
- A exclusão de branch é principalmente sobre organização e manter seu repositório organizado
Ao aprender como excluir branches corretamente, você pode manter um repositório Git limpo e evitar o erro "Cannot delete branch checked out".