Warnung: Ignorieren defekter Ref-Refs / Fernbedienungen / Origin / HEAD

77

Seit einigen Tagen wird jedes Mal, wenn ich die tabTaste drücke , um die Zweignamen in Bash zu vervollständigen, die folgende Meldung angezeigt:

Warnung: Ignorieren defekter Ref-Refs / Fernbedienungen / Ursprung / HEAD Warnung: Ignorieren defekter Ref-Refs / Fernbedienungen / Ursprung / HEAD

Dies sehe ich beispielsweise, wenn ich einen Zweig namens feature / foo habe und drücke tab:

git checkout f

$ git checkout fwarning: ignoring broken ref refs/remotes/origin/HEAD
warning: ignoring broken ref refs/remotes/origin/HEAD
eature/
Sensorario
quelle
Haben Sie einen Zweig namens "origin / HEAD"?, Versuchen Sie es git fetchund dann git branch -r. Vielleicht müssen Sie etwas aufräumen. In diesem Fall kann ich einige Bereinigungsfunktionen veröffentlichen ... (z. B. um git fetch -plokale Refs zu entfernen, die auf der Fernbedienung entfernt wurden).
Code_Fodder

Antworten:

106

Ich bin kürzlich darauf gestoßen, als jemand in meinem Team unseren alten Entwicklungszweig von der Fernbedienung gelöscht hat. Ich habe diesen Befehl ausgeführt, um den Status von HEAD zu überprüfen:

$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/old_dev

Dieser Befehl gibt den Namen des alten Entwicklungszweigs aus, der nicht mehr existiert.

Ich habe die Warnungen folgendermaßen behoben:

$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/new_dev

(Wobei "new_dev" ein Zweigname ist. Ersetzen Sie ihn durch den Namen des Zweigs, auf den HEAD zeigen soll.)

kdechant
quelle
2
Vielen Dank! Ich hatte das gleiche Problem, als ich den masterZweig in meinem Repo löschte .
Apoorv Khatreja
68

Dies ist eine einfachere Lösung als symbolic-ref.


Da Sie möglicherweise den Zweig ausgeschlossen haben, auf den ursprünglich auf origin / HEAD verwiesen wurde.

1. Listen Sie Ihre Remote-Niederlassungen mit:

git branch -r

2. Wenn es in den Ergebnissen nicht angezeigt wird:

origin/HEAD -> origin/(something)

3. Zeigen Sie einfach noch einmal mit:

git remote set-head origin master

Dabei ist "Master" der Name Ihres primären (Haupt-) Zweigs.


Das git branch -rerneute Laufen wird jetzt angezeigt origin/HEAD -> origin/(something)und die Warnung verschwindet.

Paulo Coghi
quelle
7
Diese Antwort war für mich am einfachsten zu verstehen und zu verdauen und wirkte bezaubernd. Vielen Dank.
Lokua
Gibt es eine Faustregel, worauf HEADzu verweisen ist? Anders ausgedrückt, wann würde man HEADnicht darauf hinweisen master?
Tim.rohrer
@ tim.rohrer, die Faustregel lautet, den wichtigsten Zweig auszuwählen HEAD. Der Zweig, den Sie, Ihr Team und Ihre Mitarbeiter beim Klonen zuerst sehen müssen, und höchstwahrscheinlich der Zweig, aus dem neue Produktionsversionen stammen.
Paulo Coghi
Mmmm, okay. Der wichtigste Zweig für Entwickler scheint zu sein, developaber die Produktionsversionen stammen wahrscheinlich von master. Ich kann mehr recherchieren, bin mir aber nicht sicher, warum wir das haben HEAD.
Tim.rohrer
Wenn Sie ein Repository klonen, zeigt Ihr neuer Klon auf HEAD
Paulo Coghi
9

Führen Sie einfach den Befehl aus -

git remote set-head origin master

Genießen!

Simonbor
quelle
4
Denken Sie daran, dass Ihr KOPF möglicherweise nicht aufgerufen wird master. Sie müssen verwenden, was auch immer Ihr wichtigster Zweig ist. zB master, main, rcwas Zweig Sie erwarten , ein Entwickler zu sein , auf.
Matt
2

In meinem Fall war das Problem die Datei .git\refs\remotes\origin\master, die beschädigt wurde, möglicherweise weil mein Computer vor einigen Tagen unfreiwillig vom Stromnetz getrennt wurde.

Ich habe es gelöst, indem ich den Dateiinhalt durch die richtige Referenz ersetzt habe, eine Hexadezimalzahl von 40 Zeichen, die in der Datei enthalten ist .git\FETCH_HEAD.

user7359564
quelle
1

Der Standardzweig Ihrer Fernbedienung originexistiert anscheinend nicht mehr.
Korrigieren Sie den Standardzweig der Fernbedienung:

Zigarn
quelle
1
Ich denke nicht, dass das funktioniert. Das Ändern des Haupt- oder Standardzweigs ist das, was Sie tun müssen, wenn Sie diesen Remote-Zweig zuerst löschen möchten, aber das Ändern dieses Zweigs behebt den defekten Verweis nicht.
Alondono