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.


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)


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

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


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

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
    
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.