Eu corri git branch -a
* master
remotes/origin/test
remotes/origin/master
Eu quero excluir minha filial remota
eu tentei
git push origin --delete remotes/origin/test
Eu tenho
erro: não é possível excluir 'controles remotos / origem / teste': a referência remota não existe
Como isso não existe?
Eu fiz um git branch -a
e vi listado.
Eu perdi alguma coisa ?
git branch -a
listará as ramificações no seu local e não no seu controle remoto. Certo?Respostas:
O comando
git branch -a
mostra ramificações remotas que existem no seu repositório local . Isso pode parecer um pouco confuso, mas para entendê-lo, é necessário entender que existe uma diferença entre um ramo remoto e um ramo que existe em um repositório remoto. Ramificações remotas são ramificações locais que são mapeadas para ramificações do repositório remoto. Portanto, o conjunto de ramificações remotas representa o estado do repositório remoto.A maneira usual de atualizar a lista de ramificações remotas é usar
git fetch
. Isso obtém automaticamente uma lista atualizada de ramificações do controle remoto e configura ramificações remotas no repositório local, buscando também qualquer objeto de confirmação que esteja faltando.No entanto, por padrão,
git fetch
não remove ramificações remotas que não têm mais uma ramificação de contrapartida no controle remoto. Para fazer isso, você precisa explicitamente remover a lista de ramificações remotas:Isso eliminará automaticamente as ramificações remotas que não existem mais no controle remoto. Depois,
git branch -r
mostrará uma lista atualizada dos ramos que realmente existem no controle remoto: E aqueles que você pode excluir usandogit push
.Dito isto, para usar
git push --delete
, você precisa especificar o nome da ramificação no repositório remoto; não é o nome da sua filial remota. Então, para excluir o ramotest
(representado pelo seu ramo remotoorigin/test
), você usariagit push origin --delete test
.fonte
git branch -r | grep "origin"
ajudará com grandes projetos que usam forkremotes/origin/
. Ou ambos.O significado de
remotes/origin/test
é que você tem uma ramificação chamadatest
no servidor remotoorigin
. Então o comando seriafonte
Há um atalho para excluir a ramificação na origem:
git push origin :<branch_name>
O que é o mesmo que fazer
git push origin --delete <branch_name>
fonte
fonte
git push origin --delete yourBranch
fonte
Como a ramificação remota é remota / origem / teste, você pode usar duas maneiras:
e
fonte
Eu segui a solução cutucando com um pequeno ajuste no final. Meus passos seguem
-
git fetch --prune
;-
git branch -a
imprimindo o seguintemaster
branch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/branch
(ramificação remota para remover)-
git push origin --delete branch
.Aqui, o ramo a ser removido não é nomeado apenas como
remotes/origin/branch
simplesbranch
. E o ramo é removido.fonte
origin/branch
quando deveria serbranch
.git branch -a
listará as ramificações no seu local e não as ramificações no seu controle remoto.E o erro
error: unable to delete 'remotes/origin/test': remote ref does not exist
significa que você não possui uma ramificação com esse nome no controle remoto, mas a ramificação existe no seu local.fonte
Um one-liner útil para excluir ramificações que não sejam 'master' da origem:
Certifique-se de entender as implicações de executar isso antes de fazê-lo!
fonte
Para mim, isso funcionou $ ▶ git branch -D -r origin / mybranch
Detalhes
$ ▶ git branch -a | controles remotos grep mybranch / origin / mybranch
$ ▶ git branch -r | origem grep mybranch / mybranch
$ ▶ branch git develop * feature / pré-implantação
$ ▶ git push origin --delete mybranch error: incapaz de excluir 'mybranch': ref remoto não existe erro: falha ao enviar alguns refs para '[email protected]: config / myrepo.git'
$ ▶ ramificação git -D -r origem / mybranch Origem remota / mybranch excluída (era 62c7421).
$ ▶ git branch -a | grep mybranch
$ ▶ git branch -r | grep mybranch
fonte
deve funcionar também
fonte