Warnung: Refname 'HEAD' ist nicht eindeutig

139

Ich bin neu bei Git und habe anscheinend einen Zweig zu viele, wenn ich den folgenden Befehl ausführe:

warning: refname 'HEAD' is ambiguous.

Ich erhalte folgende Ausgabe:

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

Wenn ich ausführe git branch -a

Ich bekomme folgendes:

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

Ich bin verwirrt von der remotes/origin/HEAD -> origin/master.

Was ist das und wie kann ich den mehrdeutigen Zweig loswerden?

Ich kam zu diesem Stadium, indem ich eine Zusammenführung durchführte, bei der ich den mehrdeutigen Zweig hinzugefügt habe.

dagda1
quelle
11
Was ist der erste Befehl, den Sie ausführen möchten? Sicher ist es nichtwarning: refname 'HEAD' is ambiguous.
Ben James
1
remotes/origin/HEAD -> origin/masterist kein Problem: Es zeigt nur, welcher Zweig in Remote standardmäßig ist origin. Der genannte Zweig HEADist.
Jakub Narębski
3
Ich denke, Sie müssen die Frage bearbeiten, um den Befehl zu zeigen, wo Sie versuchen auszuführen :)
Kris
Um dies zu reproduzieren, führen Sie "git fetch origin HEAD: HEAD" aus. Anscheinend wird versucht, den aktuellen Zweig zu einem neuen Zweig zusammenzuführen, der buchstäblich HEAD heißt.
Brain2000

Antworten:

224

Das Problem ist, dass Sie einen Zweig haben, HEADder absolut gefährlich ist, da dies der symbolische Name für jeden Zweig ist, der der aktuelle Zweig ist.

Benennen Sie es um:

git branch -m HEAD newbranch

Dann können Sie es untersuchen und entscheiden, was zu tun ist (löschen oder unter einem beschreibenden Filialnamen speichern).

(Der origin/HEADRemote-Zweig ist kein Problem)

u0b34a0f6ae
quelle
Dies kann auch passieren, wenn Sie eine Datei oder ein Verzeichnis mit demselben Namen wie ein Zweig haben.
Matt Connolly
2
Während origin/HEADMacht kein Problem sein, wenn Sie versehentlich einen Zweig erstellen genannt , origin/somebranchdie ein Problem (und in der gleichen „mehrdeutig“ Fehlermeldung führen werden). Wenn Sie versuchen, von "somebranch" zu ziehen, werden Sie eher von Ihrem lokalen (versehentlichen) Zweig als von der Fernbedienung ziehen. In diesem Fall fand ich, dass der Vorschlag von flickerfly, dies zu tun, git branch -d origin/somebranchgroßartig funktioniert.
Machineghost
Das hat es behoben, danke. Bemerkenswert ist, dass der Zweig "HEAD" automatisch erstellt wird, nicht von mir. Es enthielt ein einzelnes Merge-Commit und ich konnte mit Reflog nicht in einen sauberen Zustand zurückkehren. Also habe ich den Zweig umbenannt, ihn gelöscht, meinen lokalen Master "1 voraus" auf den Ursprung / Master
umgestellt und
1
Das gleiche kann für Tags passieren, nicht nur für Zweige.
Sebix
1
hah! Ich arbeite mit Robotern, die einen Kopf haben und einen Zweig namens head(Kleinbuchstaben) erstellt haben.
Orion Elenzil
36

Dadurch wird auch der Zweig gelöscht, wenn Sie ihn einfach nicht möchten.

git branch -d HEAD

Verwenden Sie ein Großbuchstaben -D, um das Löschen zu erzwingen:

git branch -D HEAD
Josiah
quelle
3
aber es wird immer noch zweideutig bleiben, gibt es eine Möglichkeit, es zu bereinigen?
RzR
27

Wenn Sie ein Tag mit dem Namen HEAD...

git tag HEAD

... Sie können dieses Tag einfach löschen mit:

git tag -d HEAD

Siehe diesen Fall: kerneltrap.org/git-tag HEAD

Bengt
quelle
Dies passiert, wenn Sie versehentlich ein Tag mit dem Namen HEAD hinzufügen, so dass Sie es wie hier vorgeschlagen löschen müssen
user1610308
1

Dies bedeutet, dass Sie einen Zweig namens "head" haben. Ich hatte das gleiche Problem, das ich mit dem folgenden Befehl gelöst habe.

git branch -d head
stacksonstacksonstacks
quelle
1

Überprüfen Sie die in Ihrem Git-Repository verfügbaren Referenzen. Sie werden zwei HEAD in Ihrem Repository beobachten. Dies macht Ihren Zweig mit dem Refnamen HEAD mehrdeutig.

git show-ref

Lösung:

  • Benennen Sie den Zweig um

    git branch -m HEAD <new_branch_name>
    

    ODER

  • Löschen Sie den Zweig

    git branch -d HEAD
    
Darshan
quelle