avvertenza: refname 'HEAD' è ambiguo


139

Sono nuovo di Git e mi sembra di avere un ramo di troppo se eseguo il comando seguente:

warning: refname 'HEAD' is ambiguous.

Ottengo il seguente output:

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 eseguo git branch -a

Ottengo quanto segue:

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

Sono confuso dal remotes/origin/HEAD -> origin/master.

Cos'è questo e come posso liberarmi del ramo ambiguo.

Sono arrivato a questo stadio eseguendo una fusione in cui penso di aver aggiunto il ramo ambiguo.


11
Qual è il primo comando che provi ad eseguire? Sicuramente non lo èwarning: refname 'HEAD' is ambiguous.
Ben James,

1
remotes/origin/HEAD -> origin/masternon è un problema: mostra solo quale ramo è predefinito in remoto origin. Il ramo chiamato HEADè.
Jakub Narębski,

3
Penso che sia necessario modificare la domanda per mostrare il comando in cui si sta tentando di eseguire :)
Kris

Per riprodurlo, esegui "git fetch origin HEAD: HEAD". Apparentemente tenta di unire il ramo corrente in un nuovo ramo chiamato, letteralmente, HEAD.
Brain2000,

Risposte:


224

Il problema è che hai un ramo chiamato HEADche è assolutamente pericoloso, poiché quello è il nome simbolico per qualunque ramo sia il ramo corrente .

Rinominalo:

git branch -m HEAD newbranch

quindi puoi esaminarlo e decidere cosa fare (eliminalo o salvalo con un nome di ramo descrittivo)

(Il origin/HEADramo remoto non è un problema)


Questo può succedere anche se ti capita di avere un file o una directory con lo stesso nome di un ramo.
Matt Connolly,

2
Anche se origin/HEADpotrebbe non essere un problema, se si crea accidentalmente un ramo chiamato origin/somebranchIS È un problema (e si otterrà lo stesso messaggio di errore "ambiguo"). Quando provi a tirare da "somebranch", finirai per tirare dal tuo ramo locale (accidentale) piuttosto che dal telecomando. In quel caso, ho scoperto che il suggerimento di flickerfly di fare git branch -d origin/somebranchfunziona alla grande.
machineghost,

Ciò ha risolto, grazie. Vale la pena notare che il ramo "HEAD" viene creato automaticamente, non da me. Conteneva un unico commit di unione e non sono riuscito a ripristinare uno stato pulito utilizzando reflog. Così, ho rinominato il ramo, cancellato, ridistribuito il mio master locale "1 ahead" all'origine / master, spinto senza problemi
Yunus Nedim Mehel

1
Lo stesso può accadere per i tag, non solo per i rami.
sebix,

1
hah! lavoro con robot che hanno una testa e hanno creato un ramo chiamato head(minuscolo).
Orion Elenzil,

36

Inoltre, questo eliminerà il ramo, se proprio non lo vuoi.

git branch -d HEAD

Usa un capitale -Dper forzare la cancellazione:

git branch -D HEAD

3
ma rimarrà comunque ambiguo, c'è un modo per eliminarlo?
RzR,

27

Se hai creato un tag denominato HEADutilizzando ...

git tag HEAD

... puoi semplicemente eliminare quel tag usando:

git tag -d HEAD

Vedi questo caso: kerneltrap.org/git-tag HEAD


Questo accade quando si aggiunge un tag con il nome HEAD per errore, quindi è necessario eliminarlo come suggerito qui
user1610308

1

Ciò significa che hai un ramo chiamato "testa". Ho avuto lo stesso problema, ho risolto eseguendo il seguente comando.

git branch -d head

1

Controlla i riferimenti disponibili nel tuo repository git. Osserverai due HEAD nel tuo repository. Questo rende ambiguo il tuo ramo con refname HEAD.

git show-ref

Soluzione:

  • Rinomina il ramo

    git branch -m HEAD <new_branch_name>
    

    O

  • Elimina il ramo

    git branch -d HEAD
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.