Excluindo uma ramificação local com Git

135

Eu pesquisei no Google e existem vários tópicos muito longos sobre esse tópico, e nenhum deles parece ajudar. Eu acho que estou fazendo algo errado. Eu tenho um ramo chamado Test_Branch. Quando tento excluí-lo usando o método recomendável, recebo o seguinte erro:

Não é possível excluir o ramo 'Test_Branch' com check-out em '[local do diretório]'.

Não recebo outras informações além disso. Posso explodir a filial remota com facilidade, mas a filial local não irá embora.

Bob Wakefield
fonte
Aliás, sou totalmente novo no Git. Utilizado apenas nos últimos dias. Realizei vários cursos on-line e li alguns livros e as respostas também não parecem estar lá.
Bob Wakefield
Se você executar git branch, o que diz?
Coredump
19
Na imagem, é o que está acontecendo: publicdomainpictures.net/pictures/10000/velka/… #
coredump
O ramo git me dá * Test_Branch master
Bob Wakefield
A estrela diz-lhe qual o ramo em que você está, isso confirma o que as respostas dizem
coredump

Respostas:

245

Alterne para outra ramificação e exclua da Test_Branchseguinte maneira:

$ git checkout master
$ git branch -d Test_Branch

Se o comando acima fornecer erro - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete ite você ainda deseja excluí-lo, poderá forçar a exclusão usando-o em -Dvez de-d , como:

$ git branch -D Test_Branch

Para excluir Test_Branchdo controle remoto, execute:

git push origin --delete Test_Branch
Arpit Aggarwal
fonte
34
Mudar de ramo foi o que me pegou - boa captura! Você não pode excluir a ramificação se estiver ativa nela. ;-)
SliverNinja - MSFT
2
Se você tentar algumas caixas diferentes e ainda assim receber a mesma mensagem, observe a saída de git status, ou git branch; se você estiver refazendo o Test_branch, simplesmente verificar uma ramificação / confirmação diferente não corrigirá isso. Em vez disso git rebase --abort, git checkout --detache finalmentegit branch -D Test_branch
droid
3
Mais evidências de que git significa "git is terrible". Quanto mais eu o uso, mais esses aros ridículos você tem que pular. Especialmente porque você provavelmente deseja voltar ao mesmo ramo.
user949300
E se alguém receber isso em troca, ao tentar mudar de agência? error: you need to resolve your current index firste eles só querem sair? EDIT - Solução git reset --:; git checkout -D [branch_name]Ufa ..
Paul
21

Você provavelmente já testou o Test_Branch e não pode excluí-lo enquanto este for seu ramo atual. Confira uma ramificação diferente e tente excluir Test_Branch.

Randy Leberknight
fonte
14

Encontrei isso hoje e mudar para outro ramo não ajudou. Acontece que, de alguma forma, as informações da minha árvore de trabalho foram corrompidas e havia uma árvore de trabalho com o mesmo caminho de pasta que o meu diretório de trabalho e HEADapontando para a ramificação ( git worktree list). Excluí a .git/worktree/pasta que a referenciava e git branch -dfuncionou.

jinxcat2008
fonte
3

Se você criou várias árvores de trabalho com a git worktree , precisará executar git pruneantes de excluir a ramificação

dkniffin
fonte
3
mais especificamente, você vai precisar usargit worktree prune
Sergioet
mas ler o que ameixa git faz, em primeiro lugar - poderia levar à perda de dados
sesquipedalias
1

Isso funcionou para mim ...
Eu removi as pastas da pasta .git / worktrees e tentei "git delete -D branch-name".

Vasu
fonte
1

No meu caso, ocorreram alterações não confirmadas do ramo anterior. Eu usei os seguintes comandos e, em seguida, excluir funcionou.

git checkout *

mestre de verificação geral do git

ramo git -D

Sankar Natarajan
fonte
0

Como outros mencionados, você não pode excluir a ramificação atual em que está trabalhando.

No meu caso, selecionei "Test_Branch" no Visual Studio e estava tentando excluir "Test_Branch" do Sourcetree (Git GUI). E estava ficando abaixo da mensagem de erro.

Não é possível excluir o ramo 'Test_Branch' com check-out em '[local do diretório]'.

Alterou para ramificação diferente no Visual Studio e conseguiu excluir "Test_Branch" do Sourcetree.

Espero que isso ajude alguém que esteja usando o Visual Studio & Sourcetree .

Praveen Mitta
fonte