aviso: refname 'HEAD' é ambíguo

139

Eu sou novo no Git e parece ter um ramo a mais se executar o seguinte comando:

warning: refname 'HEAD' is ambiguous.

Eu recebo a seguinte saída:

warning: refname 'HEAD' is ambiguous.
From github.com:dagda1/hornget
 * branch            master     -> FETCH_HEAD
warning: refname 'HEAD' is ambiguous.
warning: refname 'HEAD' is ambiguous.

Se eu executar git branch -a

Eu recebo o seguinte:

HEAD
* master
remotes/emmekappa/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

Estou confuso com o remotes/origin/HEAD -> origin/master.

O que é isso e como posso me livrar do ramo ambíguo.

Cheguei a esse estágio realizando uma mesclagem na qual acho que adicionei o ramo ambíguo.

dagda1
fonte
11
Qual é o primeiro comando que você tenta executar? Certamente que não é #warning: refname 'HEAD' is ambiguous.
9119 Ben James
1
remotes/origin/HEAD -> origin/masternão é um problema: apenas mostra qual ramificação é o padrão no controle remoto origin. O ramo chamado HEADé.
21749 Jakub Narębski
3
Eu acho que você precisa editar a pergunta para mostrar o comando que onde tentando executar :)
Kris
Para reproduzir isso, execute "git fetch origin HEAD: HEAD". Aparentemente, ele tenta mesclar o ramo atual em um novo ramo chamado, literalmente, HEAD.
Brain2000 16/06

Respostas:

224

O problema é que você tem um ramo chamado HEADque é absolutamente perigoso, pois esse é o nome simbólico para qualquer ramo que seja o ramo atual .

Renomeie-o:

git branch -m HEAD newbranch

então você pode examiná-lo e decidir o que fazer (exclua-o ou salve-o com um nome descritivo de filial)

(A origin/HEADramificação remota não é um problema)

u0b34a0f6ae
fonte
Isso também pode acontecer se você tiver um arquivo ou diretório com o mesmo nome que uma ramificação.
Matt Connolly
2
Embora origin/HEADpossa não ser um problema, se você criar acidentalmente uma ramificação chamada origin/somebranchIS IS problem (e resultará na mesma mensagem de erro "ambígua"). Quando você tenta puxar de "somebranch", você acaba puxando do seu ramo local (acidental) em vez do controle remoto. Nesse caso, descobri que a sugestão de flickerfly de fazer git branch -d origin/somebranchfunciona muito bem.
machineghost
Isso resolveu, obrigado. Vale ressaltar que o ramo "HEAD" é criado automaticamente, não por mim. Ele continha um único commit de mesclagem e não consegui reverter para um estado limpo usando reflog. Então, renomeei o ramo, excluí-o, refiz o meu mestre local "1 à frente" para a origem / mestre,
enviei
1
O mesmo pode acontecer com tags, não apenas com ramificações.
sebix
1
hah! Eu trabalho com robôs que têm cabeça e criaram um ramo chamado head(minúsculas).
orion elenzil
36

Além disso, isso excluirá o ramo, se você não quiser.

git branch -d HEAD

Use um capital -Dpara forçar a exclusão:

git branch -D HEAD
Josiah
fonte
3
mas ainda permanecerá ambíguo, existe uma maneira de eliminá-lo?
RZR
27

Se você criou uma tag nomeada HEADusando ...

git tag HEAD

... você pode excluir essa tag usando:

git tag -d HEAD

Veja este caso: kerneltrap.org/git-tag HEAD

Bengt
fonte
Isso acontece quando você adiciona etiqueta com o nome CABEÇA por engano, então você tem que excluí-lo como sugerido aqui
user1610308
1

Isso significa que você tem um ramo chamado "head". Eu tive o mesmo problema, resolvi executando o seguinte comando.

git branch -d head
stacksonstacksonstacks
fonte
1

Verifique as referências disponíveis no seu repositório git. Você observará dois HEAD em seu repositório. Isso torna sua ramificação com refname HEAD ambígua.

git show-ref

Solução:

  • Renomeie a ramificação

    git branch -m HEAD <new_branch_name>
    

    OU

  • Excluir a filial

    git branch -d HEAD
    
Darshan
fonte