Quero excluir uma ramificação local e remotamente.
Tentativas com falha para excluir uma ramificação remota
$ 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 devo fazer de maneira diferente para excluir com êxito a remotes/origin/bugfix
ramificação local e remotamente?
git
version-control
git-branch
git-push
git-remote
Matthew Rankin
fonte
fonte
deleted remote-tracking branch
": consulte github.com/git/git/commit/…Respostas:
Sumário executivo
Observe que na maioria dos casos o nome remoto é
origin
. Nesse caso, você terá que usar o comando assim.Excluir filial local
Para excluir a filial local , use um dos seguintes:
Nota: A
-d
opção é um alias para--delete
, que somente exclui a ramificação se ela já tiver sido totalmente mesclada em sua ramificação upstream. Você também pode usar-D
, que é um alias para--delete --force
, que exclui a ramificação "independentemente de seu status mesclado". [Fonte:man git-branch
]Excluir ramificação remota [Atualizado em 8 / set / 2017]
No Git v1.7.0 , você pode excluir uma ramificação remota usando
que pode ser mais fácil de lembrar do que
que foi adicionado no Git v1.5.0 "para excluir uma ramificação remota ou uma marca".
A partir do Git v2.8.0, você também pode usar
git push
a-d
opção como um alias para--delete
.Portanto, a versão do Git que você instalou determinará se você precisa usar a sintaxe mais fácil ou mais difícil.
Excluir ramificação remota [Resposta original de 5 de janeiro de 2010]
Do capítulo 3 do Pro Git, de Scott Chacon:
Eu emiti
git push origin: bugfix
e funcionou lindamente. Scott Chacon estava certo - vou querer colocar a orelha do cão nessa página (ou praticamente a orelha do cachorro, respondendo isso no Stack Overflow).Então você deve executar isso em outras máquinas
propagar alterações.
fonte
git fetch --all --prune
em outras máquinas depois de excluir a filial remota no servidor. ||| Depois de excluir a ramificação localgit branch -d
e excluir a ramificação remota comgit push origin --delete
outras máquinas, ainda pode haver "ramificações de rastreamento obsoletas" (para vê-lasgit branch -a
). Para se livrar destes fazergit fetch --all --prune
.git branch -a
para visualizar todas as filiais, você também pode usargit branch -r
para exibir apenas filiais remotas. ver tambémgit remote show origin
- fonte: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
para me livrar da filial localA resposta de Matthew é ótima para remover ramificações remotas e também aprecio a explicação, mas para fazer uma distinção simples entre os dois comandos:
Para remover uma filial local da sua máquina:
git branch -d {the_local_branch}
(use-D
para forçar a exclusão da ramificação sem verificar o status mesclado)Para remover uma filial remota do servidor:
git push origin --delete {the_remote_branch}
Referência: Git: Excluir uma ramificação (local ou remota)
fonte
-D
forçar exclusões,-d
dá-lhe um aviso se não for já se fundiram em.'git branch -d your_branch
então você vai erro comoerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
git remote prune <name>
(por exemplogit remote prune origin
) para remover localmente ramificações antigas que não existem mais no remoto.git branch -a --merged origin/master
Ele listará quaisquer ramificações, locais e remotas; que foram mesclados no mestre. Informações adicionais aquiAs respostas curtas
Se você quiser explicações mais detalhadas dos comandos a seguir, consulte as respostas longas na próxima seção.
Excluindo uma ramificação remota
Excluindo uma ramificação local
Excluindo uma filial de rastreamento remoto local
A resposta longa : existem três ramos diferentes para excluir!
Ao lidar com a exclusão de ramificações local e remotamente, lembre-se de que existem três ramificações diferentes envolvidas :
X
.X
.origin/X
que rastreia a filial remotaX
.O pôster original usado:
Que só apagados seu local de ramo de rastreamento remoto
origin/bugfix
, e não o ramo remoto realbugfix
onorigin
.Para excluir essa ramificação remota real , você precisa
Detalhes adicionais
As seções a seguir descrevem detalhes adicionais a serem considerados ao excluir suas ramificações remotas e de rastreamento remoto.
Pressionar para excluir ramificações remotas também remove ramificações de rastreamento remoto
Observe que excluir a ramificação remota
X
da linha de comando usando agit push
também removerá a ramificação local de rastreamento remotoorigin/X
, portanto, não é necessário remover a ramificação obsoleta do rastreamento remoto comgit fetch --prune
ougit fetch -p
. No entanto, não faria mal se você fizesse isso de qualquer maneira.Você pode verificar se a ramificação de rastreamento remoto
origin/X
também foi excluída executando o seguinte:Eliminando a origem obsoleta da filial de rastreamento remoto local / X
Se você não excluiu sua ramificação remota
X
da linha de comando (como acima), seu repositório local ainda conterá uma ramificação de rastreamento remoto (agora obsoleta)origin/X
. Isso pode acontecer se você excluir uma ramificação remota diretamente pela interface da web do GitHub, por exemplo.Uma maneira típica de remover essas ramificações obsoletas de rastreamento remoto (desde o Git versão 1.6.6) é simplesmente executar
git fetch
com o--prune
ou mais curto-p
. Observe que isso remove todas as ramificações locais obsoletas de rastreamento remoto de ramificações remotas que não existem mais no controle remoto :Aqui está a citação relevante das notas de versão 1.6.6 (ênfase minha):
Alternativa à remoção automática acima para ramificações obsoletas de rastreamento remoto
Como alternativa, em vez de remover suas ramificações obsoletas de rastreamento remoto local
git fetch -p
, você pode evitar a operação de rede extra apenas removendo manualmente as ramificações com os sinalizadores--remote
ou-r
:Veja também
fonte
X
eorigin/X
favoritos no clone local (2 filiais) e depoisX
no controle remoto (fazendo 3 filiais).Etapas para excluir uma ramificação:
Para excluir a ramificação remota:
Para excluir a filial local , você tem três maneiras :
Explique: OK, apenas explique o que está acontecendo aqui!
Basta fazer
git push origin --delete
para eliminar a sua filial remota única , adicione o nome do ramo no final e isso vai apagar e empurrá-lo para remoto , ao mesmo tempo ...Além disso,
git branch -D
que simplesmente apagar a filial local única ! ...-D
significa--delete --force
que excluirá o ramo, mesmo que ele não seja mesclado (exclusão forçada), mas você também pode usar o-d
que significa--delete
que gera um erro respectivo do status de mesclagem do ramo ...Também crio a imagem abaixo para mostrar as etapas:
fonte
git branch -a
exibirá ramos locais e remotos. Será uma ajuda para você introduzir o diagrama.git remote prune origin
Suas cópias locais de ramificações excluídas não são removidas por isso. O mesmo efeito é alcançado usandogit fetch --prune
Você também pode usar o seguinte para excluir a ramificação remota
O que faz a mesma coisa que
mas pode ser mais fácil lembrar.
fonte
git branch -d <local_branch>
ougit branch -D <local_branch>
por força de exclusãoDica: Ao excluir ramificações usando
ou
somente as referências são excluídas. Mesmo que a ramificação seja realmente removida no controle remoto, as referências a ela ainda existem nos repositórios locais dos membros da sua equipe. Isso significa que, para outros membros da equipe, as ramificações excluídas ainda são visíveis quando fazem uma
git branch -a
.Para resolver isso, os membros de sua equipe podem remover os ramos excluídos com
Isto é tipicamente
git remote prune origin
.fonte
git push
operação acima exclui a filial local e a filial remota.git remote prune
é uma maneira um tanto obsoleta de remover ramificações obsoletas de rastreamento remoto, a maneira mais nova de fazer isso é usargit fetch --prune
orgit fetch -p
.Se você deseja excluir uma ramificação, primeiro faça o check-out da ramificação que não seja a ramificação a ser excluída.
Excluindo a filial local:
Excluindo a ramificação remota:
fonte
fonte
-D
força a exclusão. É sempre melhor usar-d
, o que lembrará se você precisar fazer algo perigoso.Isso é simples: basta executar o seguinte comando:
Para excluir uma ramificação do Git local e remotamente, primeiro exclua a ramificação local usando este comando:
(Aqui
example
está o nome do ramo.)E depois disso, exclua a ramificação remota usando este comando:
fonte
Outra abordagem é:
AVISO: Isso excluirá todas as ramificações remotas que não existem localmente. Ou mais abrangente,
efetivamente fará com que o repositório remoto se pareça com a cópia local do repositório (cabeças, controles remotos e tags locais são espelhados no controle remoto).
fonte
Eu uso o seguinte nas minhas configurações do Bash :
Então você pode ligar para:
fonte
git push origin --delete $1
um arquivo no seu caminho chamadogit-shoot
egit shoot branchname
também funcionará.Excluir localmente:
Para excluir uma filial local, você pode usar:
Para excluir uma ramificação à força, use em
-D
vez de-d
.Excluir remotamente:
Existem duas opções:
Eu sugiro que você use a segunda maneira, pois é mais intuitiva.
fonte
Desde janeiro de 2013, o GitHub incluiu um Delete branch botão ao lado de cada ramificação na sua página "Ramificações".
Postagem relevante no blog: criar e excluir ramificações
fonte
Se você deseja concluir essas duas etapas com um único comando, é possível criar um alias adicionando o seguinte ao seu
~/.gitconfig
:Como alternativa, você pode adicionar isso à sua configuração global na linha de comando usando
NOTA : Se estiver usando
-d
(d minúsculo), a ramificação será excluída apenas se tiver sido mesclada. Para forçar a exclusão, você precisará usar-D
(D maiúsculo).fonte
&&
com;
modo que mesmo se o primeiro comando falhar o segundo ainda irá executar (por vezes apenas local ou única remota).Para excluir sua filial local e remotamente
Caixa para master branch -
git checkout master
Exclua sua filial remota -
git push origin --delete <branch-name>
Exclua sua filial local -
git branch --delete <branch-name>
fonte
Você também pode fazer isso usando
git remote prune origin
Ele remove e exclui ramificações de rastreamento remoto de uma
git branch -r
listagem.fonte
Além das outras respostas, costumo usar a ferramenta git_remote_branch . É uma instalação extra, mas oferece uma maneira conveniente de interagir com ramificações remotas. Nesse caso, para excluir:
Acho que também uso os comandos
publish
e comtrack
bastante frequência.fonte
Um comando de uma linha para excluir local e remoto :
Ou adicione o alias abaixo ao seu ~ / .gitconfig . Uso:
git kill branch-name
fonte
git branch -D
cuidado em um script, pois ele exclui forçosamente uma ramificação sem verificar se foi mesclada. Use-d
para ser seguro.Exclusão de ramificações
E para excluir a filial remota:
fonte
Excluir filial remota
git push origin :<branchname>
Excluir filial local
git branch -D <branchname>
Exclua as etapas da filial local:
fonte
git push origin :<branchname>
já empurra um 'ramo empty` para o controle remoto (daí exclui a filial remota)Basta dizer:
fonte
é mais fácil lembrar do que
fonte
Agora você pode fazer isso com a área de trabalho do GitHub aplicativo .
Depois de iniciar o aplicativo
Alterne para o ramo que você deseja excluir
No menu "Filial", selecione "Cancelar publicação ..." para excluir a filial dos servidores GitHub.
No menu "Filial", selecione "Excluir" branch_name "..." para excluir a ramificação da sua máquina local (também conhecida como a máquina em que você está trabalhando).
fonte
É muito simples:
Para excluir a ramificação remota
Ou
Para excluir ramificação local
fonte
--delete
vez de-d
excluir a filial remota.-d
A opção é um alias para--delete
e se o--delete
trabalho-d
também deve funcionar, se você deseja excluir com força uma ramificação, pode usar em-D
vez de-d
ou--delete
.Para excluir localmente - (normal)
Se sua ramificação estiver em progresso de reestruturação / mesclagem e isso não foi feito corretamente, significa que você receberá um erro,
Rebase/Merge in progress
; portanto, nesse caso, não será possível excluir sua ramificação.Então, você precisa resolver a reestruturação / mesclagem. Caso contrário, você pode forçar a exclusão usando,
Para excluir no controle remoto :
Você pode fazer o mesmo usando:
Representação gráfica:
fonte
Isso não funcionará se você tiver uma tag com o mesmo nome da filial no controle remoto:
Nesse caso, você precisa especificar que deseja excluir a ramificação, não a tag:
Da mesma forma, para excluir a tag em vez da ramificação, você usaria:
fonte
Muitas das outras respostas levarão a erros / avisos. Essa abordagem é relativamente à prova de idiotas, embora você ainda possa precisar
git branch -D branch_to_delete
se não estiver totalmente integradasome_other_branch
, por exemplo.A remoção remota não é necessária se você excluiu a ramificação remota. Ele é usado apenas para obter os controles remotos mais atualizados disponíveis em um repositório que você está rastreando. Eu observei
git fetch
adicionará controles remotos, não os removerá. Aqui está um exemplo de quandogit remote prune origin
realmente fará algo:O usuário A executa as etapas acima. O usuário B executaria os seguintes comandos para ver as ramificações remotas mais atualizadas:
fonte
Fiquei cansado de pesquisar essa resposta no Google, então adotei uma abordagem semelhante à resposta que o crizCraig postou anteriormente.
Adicionei o seguinte ao meu perfil do Bash:
Então, toda vez que termino uma ramificação (mesclada
master
, por exemplo), corro o seguinte no meu terminal:... que em seguida, exclui
my-branch-name
deorigin
como, bem como localmente.fonte
--delete "$@"
e , em-D "$@"
vez de$1
, lidará com isso para várias ramificações.git branch -d
(com letras minúsculas 'd') primeiro para garantir mudanças foram incorporadas, e em seguida, empurre se bem sucedida (colocar&&
entre comandos)Antes de executar
certifique-se de determinar primeiro qual é o nome exato da ramificação remota executando:
Isso informará o que digitar exatamente para o
<branch>
valor. (branch
diferencia maiúsculas de minúsculas!)fonte
Usar:
Se tiver certeza de que deseja excluí-lo, execute
Agora, para limpar ramificações remotas excluídas, execute
fonte