No meu repo atual, tenho a seguinte saída:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Eu quero excluir remotes/public/master
da lista de ramificações:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Além disso, a saída de git remote
é estranha, pois não lista public
:
$ git remote show
origin
Como posso excluir 'controles remotos / público / mestre' da lista de ramificações?
Atualização, tentei o git push
comando:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git
branch
remote-branch
cmcginty
fonte
fonte
git remote prune [remote-name]
ougit fetch -p [remote-name]
não no seu cenário? Fazer isso comgit gc
muito mais força do que normalmente é necessário.git remote prune [remote-name]
não funcionará com o git svn, embora nemgit gc
...git branch -rd origin/name
funcione. @ Casey, você provavelmente deve selecionar a segunda resposta - é um pouco menos perigosa.master
... particularmente ao excluir no controle remoto.Respostas:
Você pode estar precisando de uma limpeza:
ou você pode estar precisando de uma ameixa seca:
No entanto, parece que eles deveriam ter sido limpos anteriormente com
Portanto, pode ser que você tenha editado manualmente o arquivo de configuração e isso não ocorreu, ou você tem problemas de privilégio.
Talvez execute isso de novo e veja o que acontece.
Contexto do Conselho
Se você der uma olhada nos logs de revisão , notará que sugeri técnicas mais "corretas", que por qualquer motivo não quisessem trabalhar em seu repositório.
Suspeitei que o OP tivesse feito algo que deixasse sua árvore em um estado inconsistente, o que fez com que ele se comportasse um pouco estranhamente, e que
git gc
era necessário consertar a esquerda para trás da crosta.Geralmente,
git branch -rd origin/badbranch
é suficiente para ativar uma ramificação de rastreamento local ougit push origin :badbranch
ativar uma ramificação remota e, geralmente, você nunca precisará chamargit gc
fonte
git gc
não é necessário aqui, masgit remote prune
me faz sentir mais seguro do que excluir manualmente as coisasgit branch -rd
, já que o git está verificando quais ramificações remotas são feitas.Tudo que você precisa fazer é
Ele removerá todos os seus ramos locais que são excluídos remotamente.
Se você estiver no git 1.8.5+, poderá configurá-lo automaticamente
ou
fonte
Isso excluiria o ramo remoto chamado
master
como Kent Fredric apontou.Para listar ramificações de rastreamento remoto:
Para excluir uma ramificação de rastreamento remoto:
fonte
git branch -rd removed_remote/branch
trabalhou para mim, enquanto ogit gc --prune=now
foi inútil.git prune
sem problemas, mas meu colega de trabalho que bifurcou nosso repositório principal ** PODERIA SOMENTE ** usar agit branch -rd public/master
solução -style para limpar seu ambiente.git branch -rd public/master
era o que estava faltando. Eu tinhaheroku/master
eherkou/master
... lol woopsTudo que você precisa fazer é
É simples assim. Não há motivo para chamar um GC aqui.
fonte
git branch -rd $(git branch -r)
seguida, restabelecer as válidas fazendo uma busca.git config -e
renomear meu controle remoto. Renomeei o controle remotomine
paraorigin
. Então, essa foi a solução que funcionou melhor para mim:git branch -rd $(git branch -r | grep 'mine/')
git gc --prune=now
não é o que você quer.ou
git remote prune origin
# se for a fonte remotaé o que você quer
fonte
A resposta aceita não funcionou para mim quando o juiz foi empacotado. Isso, no entanto:
fonte
No meu caso, eu estava tentando excluir as entradas salvas
.git/packed-refs
. Você pode editar esse arquivo de texto sem formatação e excluir entradas quegit br -D
não sabem como tocar (pelo menos na versão 1.7.9.5).Encontrei esta solução aqui: https://stackoverflow.com/a/11050880/1695680
fonte
git gc
. Quando ele compacta seus commits em um arquivo compactado, ele também moveu as referências para um único arquivo de texto sem formatação, possivelmente para fins de otimização; Espero que as versões futuras do git possamgit br -D ...
embalar referências.Referenciado em: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
fonte
Como eu não sabia
git branch -rd
, a maneira como resolvi problemas como esse é tratar meu repositório como um repositório remoto e fazer uma exclusão remota.git push . :refs/remotes/public/master
. Se as outras formas não funcionarem e você tiver alguma referência estranha da qual deseja se livrar, essa maneira crua é infalível. Ele fornece a precisão exata para remover (ou criar!) Qualquer tipo de referência.fonte
Apenas um pouco relacionado, mas ainda assim pode ser útil na mesma situação que tínhamos - usamos um compartilhamento de arquivos de rede para nosso repositório remoto. Na semana passada, as coisas estavam funcionando, esta semana estávamos recebendo o erro "Origem remota não anunciava referência para refs / cabeças / mestre da filial. Essa referência pode não existir no controle remoto ou pode estar oculta pelas configurações de permissão"
Mas acreditávamos que nada havia sido feito para corromper as coisas. O NFS faz instantâneos, então revisei cada "versão anterior" e vi que três dias atrás, o tamanho em MB do repositório havia passado de 282MB para 33MB, e agora existiam cerca de 1.403 novos arquivos e 300 pastas. Eu perguntei aos meus colegas de trabalho e um deles tentou dar um empurrão naquele dia - depois o cancelou.
Usei a funcionalidade "Restaurar" do NFS para restaurá-la imediatamente antes dessa data e agora tudo está funcionando bem novamente. Eu tentei a ameixa anteriormente, não parecia ajudar. Talvez as limpezas mais severas tivessem funcionado.
Espero que isso possa ajudar alguém mais um dia!
Jay
fonte
Eu tive um problema parecido. Nenhuma das respostas ajudou. No meu caso, eu tinha dois repositórios remotos removidos aparecendo permanentemente.
Minha última idéia foi remover todas as referências à mão.
Digamos que o repositório se chame "Repo". Eu fiz:
Portanto, excluí os arquivos e diretórios correspondentes da pasta .git ( essa pasta pode ser encontrada no aplicativo Rails ou no computador https://stackoverflow.com/a/19538763/6638513 ).
Então eu fiz:
Isso encontrou alguns arquivos de texto nos quais eu removi as linhas correspondentes. Agora, tudo parece estar bem.
Normalmente, você deve deixar esse trabalho para o git.
fonte