Respostas:
Eu não entendo as ramificações disso, mas como sugerido neste tópico , quando eu encontrei isso, eu apenas fiz
$ mv .git/refs/remotes/origin/HEAD /tmp
(mantendo-o por precaução) e depois
$ git gc
trabalhou sem reclamar; Não tive problemas.
git prune
funcionou para mim, uma maneira de excluir dados acumulados no Git, mas que não estão sendo referenciados por nada útil.
$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
funcionou para mim #
O problema que eu encontrei (que é o mesmo problema que o @Stavarengo mencionou neste comentário acima) é que o ramo remoto padrão ( develop
no meu caso) foi excluído, mas ainda foi mencionado em .git/refs/remotes/origin/HEAD
.
A abertura .git/refs/remotes/origin/HEAD
no meu editor mostrou isso:
ref: refs/remotes/origin/develop
Eu o editei cuidadosamente para apontar para o meu novo ramo padrão e tudo estava bem:
ref: refs/remotes/origin/master
A pista que me deu a dica foi que a corrida git prune
mostrou este erro:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Depois de ver a resposta de Trenton, olhei para a minha .git/refs/remotes/origin/HEAD
e vi que ela também estava apontando para um ramo antigo que agora foi excluído.
Mas, em vez de editar o arquivo, tentei a solução de Ryan:
git remote set-head origin --auto
Ele definiu automaticamente o arquivo para a nova ramificação e git gc
funcionou bem depois disso.
git remote set-head $REMOTE --auto
no meu caso, $ REMOTE é o alias remoto, não a "origem" padrão, porque tenho vários controles remotos configurados.
Eu pensei que a solução era a seguinte, pois isso parecia funcionar, mas acaba não resolvendo o problema.
git remote set-head origin --auto
git prune
(como recomendado na saída do primeiro comando), portanto não sou capaz de dizer exatamente o que me ajudou - primeiro, segundo ou ambos.
git remote set-head origin --auto
fixa o meu refs / remotes / origem arquivo / HEAD sem me ter de usargit prune
error: Multiple remote HEAD branches. Please choose one explicitly
e tive que usar git remote set-head origin mybranch
(enquanto o ramo 'mybranch' estava fazendo checkout) para obter o erro.
Parece que suas referências simbólicas podem estar quebradas ... Tente substituí-lo por sua ramificação padrão da seguinte maneira: Por exemplo, minha ramificação padrão é master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Isso deve consertar.
A causa disso para mim estava trabalhando em uma pasta compactada no Windows. Quando a pasta foi descompactada, ela corrompeu os arquivos do pacote, causando outros problemas estranhos, como não poder remover ramificações inexistentes.
A única correção foi limpar o diretório de trabalho e clonar o (s) controle remoto (s) repo novamente. Felizmente, eu ainda podia enviar e receber atualizações para garantir que nada foi perdido. Tudo está bem agora.
master
para outro chamadodevelop
. Dias antes de eu voltar a alterar de edevelop
para excluir a ramificação padrão antiga , mas no meu diretório de trabalho, o arquivo ainda estava apontando para o qual não existe mais. Nessa situação, a remoção do arquivo funcionou.master
develop
.git/refs/remotes/origin/HEAD
refs/remotes/origin/develop