Estou tentando excluir um ramo remoto do git com
git push origin :my_remote_branch
e obtendo:
error: unable to push to unqualified destination: my_remote_branch
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to '[email protected]:/myrepo'
estes são meus ramos atuais
git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/my_remote_branch
git branch -r --merged
origin/HEAD -> origin/master
origin/develop
origin/master
Qualquer idéia de como me livrar desse ramo seria apreciada.
git fetch
ver se ele corrigia esse nome remoto inexistente? Você tentou entrar.git\refs\remotes\origin
e excluir omy_remote_branch
arquivo, para ver se isso é suficiente?git fetch
mas isso não ajudou. Tentará procurar uma solução mais direta antes de tentar excluir o arquivo manualmente.git fetch -p
para se livrar de ramos de rastreamento obsoletos.Respostas:
O fato de
refs/remotes/origin/my_remote_branch
existir no seu repositório local não implica querefs/heads/my_remote_branch
existe noorigin
repositório remoto.Faça
git fetch -p origin
pararefs/remotes/origin/my_remote_branch
desaparecer se já tiver sido excluído na origem. A-p
opção diz à busca para excluir quaisquer ramificações de rastreamento que não existem mais nos controles remotos correspondentes; por padrão, eles são mantidos por aí.fonte
git fetch -p origin
consertou para mim. Muito obrigado.git push origin --delete origin/feature/x
me deu erro sobre a inexistência refgit push origin :feature/x
excluiu o ramo. Então eu achogit push origin --delete <branchName>
que não deve incluir a origem no branchName (?), Mas é completo, o que é confuso.git push origin --delete feature/x
, porque você está dando o nome do ramo na origem e ele não possui esse prefixo (os dois formulários são sinônimos de qualquer maneira).:
para não incluir,origin
mas é concluído como emorigin/branch_name
vez de simplesmentebranch_name
ao usar a--delete
variante.Pergunta encontrada limpando antigos ramos git remotos e isso fez o truque
fonte
git push origin :my_remote_branch
exclui exatamente a ramificação do controle remoto e agit branch -r -d origin/my_remote_branch
remove da minha lista local de ramificações remotas #Encontrei isso ao tentar excluir uma ramificação remota que já havia sido excluída. Tudo o que era necessário era uma ameixa:
fonte
Tente seguir duas opções para excluir ramificação remota à força
Opção 1
opção 2
fonte
não foi suficiente para mim. Antes eu tinha que ir ao servidor e trabalhar diretamente com o diretório git (o que é perigoso e feio) para remover a ramificação:
fonte
git push origin :my_remote_branch
. Cuidado com o cólon.git push origin :my_remote_branch
é o caminho normal. Essa maneira feia e perigosa é quando isso não funciona (por exemplo, devido ao git mal configurado).Eu tenho o problema semelhante. Primeiro fui para essa discussão, mas não consegui resolver o problema até ver https://stackoverflow.com/a/32147743/4209849 .
que simplesmente adiciona uma dica sobre como distinguir
origin/my-branch-name
emy-branch-name
.Para ser específico, devo usar:
ao invés de
Isso resolveu meu problema, pelo menos, espero que ajude os outros também.
fonte
Para mim, o problema era que esse era o meu ramo padrão no github. Alterei a ramificação padrão e a operação de exclusão foi bem-sucedida.
Espero que ajude alguém
fonte
Com esse mesmo problema, editei meu
./.git/config
arquivo manualmente para incluir:O que resultou em:
error: src refspec branchName matches more than one.
Isso eu corrigi executando$git tag -d branchName
. Depois disso, fui capaz de empurrar o novo ramo para a montante.fonte
Isso funcionou para mim: criei a ramificação remota na interface do usuário do github e, em seguida, enviei minha ramificação local que tinha o mesmo nome. Experimente caso outras maneiras não funcionem. Outra maneira seria criar uma nova ramificação localmente e enviar uma ramificação vazia e, mais tarde, escolher seu commit e enviar novamente para o controle remoto.
fonte