Ich habe ein paar Leute gesehen, die hier die gleiche Frage gestellt haben, aber es scheint, dass keiner ihrer Ratschläge auf mich zutrifft. Ich erhalte die Warnung im Titel, habe aber keine Tags mit dem Namen "master". Dies ist das Ergebnis von git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Irgendeine Idee, was hier falsch laufen könnte? Ich benutze Git erst seit ein paar Monaten, daher macht es mir meistens nur Sorgen, dass diese Mehrdeutigkeit in Zukunft das Repo beeinträchtigen könnte.
git checkout heads/master
sollte funktionieren (ohne Vorwarnung)git show-ref
.git show-ref
ist eine Menge Sachen, die hier nicht passen würden. Ich glaube, es könnte relevant sein, dass es zwei Zeilen gibt, die mit "master" enden: refs / remotes / origin / master, refs / Heads / masterAntworten:
Für mich habe ich die Quelle dieser Warnung viel früher aufgespürt, als ich fälschlicherweise einen "update-ref" -Befehl ausgegeben habe. Wenn Sie vergessen, den vollständigen Pfad für refs / Heads / Mybranchname im ersten Argument anzugeben, wird eine Datei .git / Mybranchname erstellt, die später zu dieser Warnung führt, wenn Sie versuchen, zu diesem Zweig zu wechseln.
Es wird gelöst, indem einfach der .git / mybranchname gelöscht wird, z.
Als Referenz lautet die korrekte Form für den Befehl update-ref:
Vergessen Sie nicht den Teil "Schiedsrichter / Köpfe"!
Mein häufigster Anwendungsfall für Update-Ref ist das manuelle Verschieben eines Zweigs, um auf ein anderes Commit zu verweisen. Ich habe eine einfachere Syntax gefunden:
git branch -f myBranchToMove destinationBranchOrHash
Diese Syntax ist für mich einfacher, da dafür kein fehleranfälliger Refs / Heads-Pfadqualifizierer erforderlich ist.
quelle
git update-ref -d master
funktioniert auch, wenn Sie feststellen, dass es der Befehl update-ref ist, der die doppelte Referenz erstellt hat.Wie in " Git: refname '
master
' ist mehrdeutig " beschrieben, bedeutet dies, dassheads/master
Sie daneben einen anderen Master in einem der folgenden Namespace innerhalb des Git-Repos haben:Oder sogar
./<refname>
, wie in Magnus ' Antwort erwähnt .quelle
./<refname>
wie Magnus es erwähnt hat. (Dies war in meinem Fall)sollte Ihr Problem beheben.
quelle
Zum späteren Nachschlagen hatte ich das gleiche Problem und was für mich letztendlich funktionierte, war die hier beschriebene Lösung . Grundsätzlich können Sie, wenn Sie eine
Git: warning: refname 'xxx' is ambiguous
Warnung erhalten, Folgendes verwendengit show-ref xxx
, um die Verweise auf diexxx
Verzweigung zu überprüfen und zu überprüfen , welche Konflikte bestehen.In meinem Szenario war es ein Tag mit dem Namen
xxx
und ein Zweigname mit demselben Namen. Das Tag wurde versehentlich erstellt und vom Server entfernt. Alles, was ich tun musste, war, mein lokales Tag so zu aktualisieren, dass es mit dem Server übereinstimmt :git fetch -p -P
. Dieser Befehl wird hier ausführlich erläutertquelle
Ich hatte ein ähnliches Problem (nicht Master), als ich einen Zweig mit demselben Namen wie ein Tag erstellte.
Dies hat mir geholfen, das Tag https://stackoverflow.com/a/5480292/150953 zu entfernen
quelle