Como remover um branch do Git local e remotamente?

Desejo excluir uma ramificação localmente e no plugue do meu projeto remoto no GitHub .

Não foi possível excluir o ramo eliminado

 $ git branch -d remotes/origin/bugfix error: branch 'remotes/origin/bugfix' not found. $ git branch -d origin/bugfix error: branch 'origin/bugfix' not found. $ git branch -rd origin/bugfix Deleted remote branch origin/bugfix (was 2a14ef7). $ git push Everything up-to-date $ git pull From github.com:gituser/gitproject * [new branch] bugfix -> origin/bugfix Already up-to-date. 

O que eu preciso fazer de forma diferente para remover com êxito os remotes/origin/bugfix tanto localmente quanto no GitHub?

14380
05 янв. Matthew Rankin definido em 05 de janeiro 2010-01-05 04:12 '10 às 4:12 2010-01-05 04:12
@ 40 respostas
  • 1
  • 2

Resumo executivo

 $ git push --delete <remote_name> <branch_name> $ git branch -d <branch_name> 

Observe que, na maioria dos casos, o nome excluído é origin .

Excluir ramificação local

Para excluir um ramo local, use um dos seguintes:

 $ git branch -d branch_name $ git branch -D branch_name 

Nota O parâmetro -d é um pseudônimo para --delete , que exclui uma ramificação apenas se ela já estiver totalmente integrada à ramificação pai. Você também pode usar -d , que é um alias para --delete --force , que exclui a ramificação "independentemente de seu status combinado". [Fonte: man git-branch ]

Excluir segmento excluído [atualizado em 8 de setembro de 2017]

A partir do Git v1.7.0 , você pode excluir uma ramificação excluída usando

 $ git push <remote_name> --delete <branch_name> 

o que poderia ser mais fácil de lembrar do que

 $ git push <remote_name> :<branch_name> 

que foi adicionado no Git v1.5.0 "para remover uma ramificação ou tag deletada".

A partir do Git v2.8.0, você também pode usar o git push com -d como o alias para --delete .

Assim, a versão do Git que você instalou determinará se você precisa usar uma sintaxe mais simples ou mais complexa.

Excluir uma filial excluída [Resposta original de 5 de janeiro de 2010]

Do capítulo 3 de Pro Git por Scott Chacon:

Excluindo ramificações excluídas

Suponha que você tenha uma filial remota - digamos, você e seus colaboradores acabaram com uma função e a combinaram com sua ramificação principal do controle remoto (ou qualquer outra ramificação que contenha sua linha estável de código). Você pode excluir uma ramificação remota usando a sintaxe contundente de git push [remotename] :[branch] . Se você quiser remover o patch do servidor do servidor, faça o seguinte:

 $ git push origin :serverfix To git@github.com:schacon/simplegit.git - [deleted] serverfix 

Boom Não há mais ramificações no seu servidor. Você pode querer ver esta página porque você precisa deste comando e você provavelmente esquecerá a sintaxe. Para memorizar este comando, git push [remotename] [localbranch]:[remotebranch] sintaxe git push [remotename] [localbranch]:[remotebranch] é git push [remotename] [localbranch]:[remotebranch] que analisamos um pouco antes. Se você é a parte [localbranch] de [localbranch] , então basicamente diga: "Não pegue nada do meu lado e faça isso [remotebranch] ".

Eu liberei o git push origin :bugfix e funcionou bem. Scott Chacon estava certo - eu quero ouvir esta página (ou, na verdade, o ouvido de um cachorro, respondendo a isso no Stack Overflow).

Então você tem que fazer isso em outras máquinas.

 git fetch --all --prune 

propagar mudanças.

17997
05 янв. A resposta é dada por Matthew Rankin 05 de janeiro 2010-01-05 04:13 '10 às 4:13 2010-01-05 04:13

A resposta de Matthew é ótima para deletar ramificações deletadas, e eu também sou grata pela explicação, mas pela simples diferença entre os dois comandos:

Para remover um ramo local Do seu dispositivo:

git branch -d {the_local_branch} (use -D vez de forçar a remoção de um branch sem verificar o estado mesclado)

border=0

Para remover um servidor de ramificação remota de um servidor:

git push origin --delete {the_remote_branch}

Link: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

2944
12 июня '12 в 17:51 2012-06-12 17:51 a resposta é dada por Eric Brotto em 12 de junho '12 às 17:51 2012-06-12 17:51

Respostas curtas

Se você quiser explicações mais detalhadas dos seguintes comandos, veja as respostas longas na próxima seção.

Excluindo um ramo remoto:

 git branch --delete <branch> git branch -d <branch> # Shorter version git branch -D <branch> # Force delete un-merged branches 

Excluindo uma ramificação de rastreamento remoto local:

1697
30 мая '14 в 21:32 2014-05-30 21:32 a resposta é dada por user456814 May 30 '14 at 21:32 2014-05-30 21:32

Etapas para remover um ramo:

para excluir um ramo remoto:

 git push origin --delete <your_branch> 

Para excluir um ramo local, você tem três opções :

 1: git branch -D <branch_name> 2: git branch --delete --force <branch_name> //same as -D 3: git branch --delete <branch_name> //error on unmerge 

Explique: bem, apenas explique o que está acontecendo aqui!

Apenas execute git push origin --delete para deletar SOMENTE o branch deletado , adicione o nome do branch no final, e ele irá deletar e enviar para o branch remoto ...

Além disso, git branch -D , que simplesmente exclui APENAS o branch local! ...

-D significa --delete --force que exclui uma ramificação, mesmo que ela não seja mesclada (exclusão forçada), mas você também pode usar -D que significa --delete which --delete erro correspondente ao estado da mesclagem da ramificação ...

Eu também criei uma imagem abaixo para mostrar os passos:

2019

27 июня '17 в 16:13 2017-06-27 16:13 a resposta é dada por Alireza em 27 de junho '17 às 4:13 2017-05-06-27 16:13

Você também pode usar o seguinte para remover uma ramificação excluída.

 git push --delete origin serverfix 

Qual faz a mesma coisa que

 git push origin :serverfix 

mas pode ser mais fácil de lembrar.

719
28 окт. resposta dada pagetribe 28 de outubro. 2011-10-28 01:22 '11 às 1:22 2011-10-28 01:22

Se você quiser excluir uma ramificação, primeiro saia para uma ramificação diferente da ramificação que deseja excluir.

 git checkout other_than_branch_to_be_deleted 

Excluindo um ramo local:

 git branch -D branch_to_be_deleted 

Excluindo um ramo remoto:

 git push origin --delete branch_to_be_deleted 
350
07 окт. a resposta é dada por Praveen Hiremath Oct 07 2014-10-07 16:52 '14 às 16:52 2014-10-07 16:52

Dica: ao excluir ramificações com

 git push origin :<branchname> # deletes remote branch 

Apenas links são excluídos. Embora a ramificação seja realmente excluída, os links para ela ainda existem nos repositórios locais dos membros de sua equipe. Isso significa que, para os outros membros da equipe, as ramificações remotas ainda são visíveis quando fazem o git branch -a .

Para resolver esse problema, os membros da sua equipe podem excluir as ramificações excluídas usando

 git remote prune <repository> 

Isso geralmente é git remote prune origin .

338
07 нояб. a resposta é dada pfrenssen 07 nov. 2012-11-07 16:02 '12 em 4:02 pm 2012-11-07 16:02
 git branch -D <name-of-branch> git branch -D -r origin/<name-of-branch> git push origin :<name-of-branch> 
250
24 окт. resposta dada a Felipe 24 de outubro. 2013-10-24 20:36 '13 às 8:36 pm 2013-10-24 20:36

É simples: basta executar o seguinte comando:

Para remover uma ramificação do Git local e remotamente, primeiro remova a ramificação local usando o comando:

 git branch -d example 

(aqui example é o nome do ramo)

E depois disso, apague a ramificação deletada usando o comando:

 git push origin :example 
215
15 февр. respondeu a Syeful Islam em 15 de fev 2015-02-15 18:20 '15 às 18:20 2015-02-15 18:20

Outra abordagem:

 git push --prune origin 

ATENÇÃO: Isso excluirá todas as ramificações remotas que não existem localmente. Ou mais abrangente,

 git push --mirror 

efetivamente faça com que o repositório remoto pareça uma cópia local do repositório (cabeçalhos, controles remotos e tags locais são refletidos no remoto).

181
18 нояб. Resposta dada por imanuelcostigan 18 nov 2012-11-18 09:11 '12 em 9:11 2012-11-18 09:11

Eu uso o seguinte nas minhas configurações bash :

 alias git-shoot="git push origin --delete" 

Então você pode ligar:

 git-shoot branchname 
152
03 апр. A resposta é dada CrizCraig 03 abr. 2013-04-03 01:11 '13 às 1:11 2013-04-03 01:11

Desde janeiro de 2013, o GitHub inclui o botão Excluir ramificação ao lado de cada ramificação na página "Ramificações".

Postagem relevante no blog: criação e exclusão de filiais

120
29 апр. a resposta é dada por Nacho Coloma em 29 de abr 2013-04-29 13:39 '13 às 13:39 2013-04-29 13:39

Se você quiser executar ambas as ações com um comando, você pode alias-lo adicionando seu ~/.gitconfig abaixo ao seu:

 [alias] rmbranch = "!f(){ git branch -d ${1}  git push origin --delete ${1}; };f" 

Alternativamente, você pode adicionar isso à sua configuração global a partir da linha de comando usando

112
15 янв. Resposta dada por Ryan Kohn em 15 de janeiro 2013-01-15 22:05 '13 às 10:05 pm 2013-01-15 22:05

Para excluir uma filial local e remotamente

  • Faça uma compra no branch - git checkout master

  • Exclua a ramificação remota - git push origin --delete <branch-name>

  • Exclua a ramificação local - ramificação git branch --delete <branch-name>

106
04 янв. a resposta é dada mfathy00 Jan 04 2016-01-04 00:08 '16 às 0:08 2016-01-04 00:08

Excluir localmente:

Para excluir um ramo local, você pode usar:

 git branch -d <branch_name> 

Para forçar uma ramificação a ser excluída, use -D vez de -D .

 git branch -D <branch_name> 

Excluir remotamente:

Existem duas opções:

 git push origin :branchname git push origin --delete branchname 

Eu sugiro que você use o segundo método, pois é mais intuitivo.

103
23 мая '15 в 11:56 2015-05-23 11:56 a resposta é dada por Rahul Gupta 23 de maio de '15 às 11:56 2015-05-23 11:56

Você também pode fazer isso usando git remote prune origin

 $ git remote prune origin Pruning origin URL: git@example.com/yourrepo.git * [pruned] origin/some-branchs 

Ele remove e remove as ramificações de rastreamento remoto da ramificação git branch -r list.

97
12 марта '13 в 17:57 2013-03-12 17:57 a resposta é dada nickleefly 12 de março '13 às 17:57 2013-03-12 17:57

Além de outras respostas, geralmente uso a ferramenta git_remote_branch . Esta é uma instalação opcional, mas oferece uma maneira conveniente de interagir com ramificações remotas. Nesse caso, exclua:

 grb delete branch 

Acho que também uso frequentemente os comandos publish e track .

95
24 марта '12 в 5:21 2012-03-24 05:21 a resposta é dada u2622 24 de março de 2012 às 5:21 2012-03-24 05:21

Excluindo filiais

Suponha que nosso trabalho na ramificação "formulário de contato" esteja completo e já o tenhamos integrado ao "mestre". Como não precisamos mais dele, podemos excluí-lo (localmente):

 $ git branch -d contact-form 

E para excluir um ramo remoto:

 git push origin --delete contact-form 
86
30 окт. a resposta é dada Ulysses Alves 30 de outubro. 2015-10-30 15:39 '15 às 15:39 2015-10-30 15:39

Um comando liner remove local e remoto:

D=branch-name; git branch -D $D; git push origin :$D

ou adicione um alias abaixo em ~ / .gitconfig; uso: git kill branch-name

 [alias] kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f" 
85
17 нояб. A resposta é dada por Vinnie James, em 17 de novembro. 2016-11-17 04:03 '16 às 4:03. 2016-11-17 04:03

Excluir um ramo remoto

git push origin :<branchname>

Excluir ramificação local

git branch -D <branchname>

Exclua as etapas de transição locais:

  • verifique em outro ramo
  • excluir filial local
82
31 дек. A resposta é dada jayxhj 31 dez 2015-12-31 12:22 '16 às 12:22 2015-12-31 12:22

Apenas diga:

 git branch -d <branch-name> git push origin :<branch-name> 
80
23 апр. Resposta dada por piyushmandovra em 23 de abr 2015-04-23 21:06 '15 às 21:06 2015-04-23 21:06

Agora você pode fazer isso com o aplicativo GitHub Desktop .

Depois de iniciar o aplicativo

  • Clique no projeto que contém o ramo
  • Vá para o ramo que você deseja excluir. 2019
22 окт. A resposta é dada por Eric em 22 de outubro. 2015-10-22 10:38 '15 às 10:38 2015-10-22 10:38

Para excluir localmente - (Normal),

 git branch -d my_branch 

Se a sua ramificação estiver no processo de recuperação / mesclagem e não tiver sido feita corretamente, você receberá uma mensagem de erro Rebase/Merge in progress , portanto, nesse caso, você não poderá excluir sua ramificação.

Assim, ou a sua necessidade de permitir overflow / merge, caso contrário, você pode remover à força usando

 git branch -d my_branch 

Para excluir no Remoto:

 git push --delete origin my_branch 

pode usar a mesma coisa

 git push origin :my_branch # easy to remember both will do the same. 

Apresentação gráfica

2019

 git push origin --delete <branch Name> 

mais fácil de lembrar do que

 git push origin :branchName 
68
02 мая '15 в 13:59 2015-05-02 13:59 a resposta é dada Smila 02 maio '15 at 13:59 2015-05-02 13:59

Isso não funcionará se você tiver uma tag com o mesmo nome da ramificação do controle remoto:

 $ git push origin :branch-or-tag-name error: dst refspec branch-or-tag-name matches more than one. error: failed to push some refs to 'git@github.com:SomeName/some-repo.git' 

Nesse caso, você precisa especificar que deseja excluir a ramificação, não a tag:

 git push origin :refs/heads/branch-or-tag-name 

Da mesma forma, para remover uma tag em vez de uma ramificação, você deve usar:

 git push origin :refs/tags/branch-or-tag-name 
60
29 июля '14 в 12:02 2014-07-29 12:02 a resposta é dada Amiramix 29 de julho de '14 às 12:02 2014-07-29 12:02

Fiquei aborrecido ao olhar por trás dessa resposta, então fiz uma abordagem semelhante à resposta que o crizCraig havia publicado anteriormente.

O seguinte é adicionado ao meu perfil bash:

 function gitdelete(){ git push origin --delete $1 git branch -D $1 } 

Então, toda vez que faço isso com uma ramificação (por exemplo, mesclando em um master ), eu corro o seguinte no meu terminal:

 gitdelete my-branch-name 

... que remove my-branch-name do my-branch-name de origin como localmente.

48
10 февр. A resposta é dada arthurakay 10 de fevereiro 2016-02-10 22:47 '16 às 22:47 2016-02-10 22:47

Muitas outras respostas levarão a erros / avisos. Esta abordagem é relativa ao git branch -D branch_to_delete embora você ainda possa precisar do git branch -D branch_to_delete se ele não for completamente mesclado, por exemplo, em some_other_branch .

 git checkout some_other_branch git push origin :branch_to_delete git branch -d branch_to_delete 

A exclusão não é necessária se você excluir uma ramificação excluída. Ele foi usado apenas para obter os controles remotos mais avançados disponíveis no armazenamento que você está rastreando. Percebi que a git fetch adicionará consoles e não os removerá. Aqui está um exemplo de quando git remote prune origin realmente faz alguma coisa:

O usuário A executa as etapas descritas acima. O usuário B executará os seguintes comandos para ver as ramificações remotas mais recentes.

 git fetch git remote prune origin git branch -r 
47
27 нояб. A resposta é dada por Brandon Cook em 27 de novembro. 2013-11-27 06:04 '13 às 6:04 2013-11-27 06:04

Antes de executar

 git branch --delete <branch> 

Certifique-se de definir primeiro que EXACT é o nome da ramificação remota executando:

 git ls-remote 

Isso lhe dirá o que inserir EXATAMENTE para o valor de <branch> . (caso de branch sensível!)

44
21 мая '16 в 0:42 2016-05-21 00:42 resposta dada por joey em 21 de maio de '16 às 00:42 2016-05-21 00:42
 git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually 

Se tiver certeza de que deseja removê-lo, execute

 git branch -D bugfix 

Agora, a limpeza de ramificações remotas remotas está em andamento.

 git remote prune origin 
43
21 апр. a resposta é dada Vivek 21 abr. 2016-04-21 19:49 '16 às 19:49 2016-04-21 19:49

Mashup todas as outras respostas. Requer Ruby 1.9.3+ , testado apenas no OS X.

Nomeie esse arquivo como git-remove , torne-o executável e coloque-o em seu caminho. Então use, por exemplo, git remove temp .

41
20 нояб. a resposta é dada Dan Rosenstark 20 nov. 2013-11-20 00:02 '13 às 0:02 2013-11-20 00:02
  • 1
  • 2

Outras questões sobre tags ou Faça uma Pergunta