Wenn ich mit git 1.6.4.2 a ausprobiere, erhalte git pull
ich folgenden Fehler:
error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
! [new branch] LT558-optimize-sql -> origin/LT558-optimize-sql (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
! [new branch] split-css -> origin/split-css (unable to update local ref)
Ich habe es versucht git remote prune origin
, aber es hat nicht geholfen.
Antworten:
Bereinigen Sie Ihr lokales Repository mit:
Mann git-gc (1):
Mann Git-Remote (1):
quelle
git remote prune origin
Befehl auf meiner lokalen Arbeitskopie oder im Remote-Repository ausgeführt?Ist mir auch passiert. In meinem Fall war der schlechte Schiedsrichter Meister, und ich habe Folgendes getan:
Dadurch konnte git die Referenzdatei wiederherstellen. Danach funktionierte alles wieder wie erwartet.
quelle
.git
es sich um einen Ordner handelt.ls -la
Wenn nicht, überprüfen Sie den Inhalt der.git
Dateidatei, um den tatsächlichen .git-Ordner zu finden, in dem sich die Refs befinden..git
Dateiinhalt in meinem Fall:gitdir: ../.git/modules/my-submodule-name
Das hat den Job für mich gemacht:
quelle
git remote prune origin
Bei mir hat es funktioniert, die Dateien, die Fehler auslösen, aus dem Ordner zu entfernen
.git/refs/remotes/origin/
.quelle
NULL
s neu geschrieben.Versuch es:
quelle
Führen Sie die folgenden Befehle aus:
quelle
Ich möchte nur hinzufügen, wie es passieren kann, dass eine Referenz bricht.
Mögliche Grundursache
Auf meinem System (Windows 7 64-Bit), wenn ein BSOD passiert , einige der gespeicherten Referenzdateien (zur Zeit höchstwahrscheinlich geöffnet / werden geschrieben in , wenn BSOD geschehen) mit überschrieben
NULL
Zeichen (ASCII 0) gewonnen .Wie bereits erwähnt, reicht es zur Behebung aus, nur diese ungültigen Referenzdateien zu löschen und das Repository erneut abzurufen oder abzurufen.
Beispiel
Error:
cannot lock ref 'refs/remotes/origin/some/branch': unable to resolve reference 'refs/remotes/origin/some/branch': reference broken
Lösung: Löschen Sie die Datei
%repo_root%/.git/refs/remotes/origin/some/branch
quelle
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
. Der Versuchgit pull
nach dem Löschen der ersten zurückgegebenen Dateifatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/master': reference broken
. Nach dem Löschen war die zweite Dateigit pull origin master
erfolgreich.Ich hatte das gleiche Problem und löste es, indem ich zu der Datei ging, in der es fehlerhaft war:
Diese Datei war voller Nullen, ich habe sie durch die neueste Referenz von github ersetzt.
quelle
.git/refs/remotes/origin/master
war nur leer. Das Problem wurde durch Entfernen behoben.In meinem Fall wurde das Problem behoben, nachdem ich alle entfernten Referenzdateien im Verzeichnis gelöscht habe
.git
.Wenn Sie sich die Nachricht ansehen, erfahren Sie, welche Dateien Sie (speziell) löschen müssen.
Die zu löschenden Dateien befinden sich unter
.git/refs/remotes
.Ich habe gerade alle Dateien dort gelöscht und gc prune ausgeführt
Danach funktioniert alles einwandfrei.
quelle
Erläuterung : Es scheint, dass Ihre Remote-Repo-Zweige (in Github / Bitbucket) entfernt wurden, obwohl Ihre lokalen Referenzen nicht aktualisiert wurden und auf nicht vorhandene Referenzen verweisen.
Um dieses Problem zu lösen:
Für zusätzliche Lektüre - Referenz aus der Github-Dokumentation :
quelle
git fetch --prune
Dieser Fehler wurde für mich behoben:Dies setzt jedoch voraus, dass der fehlerhafte Zweig auf der Fernbedienung gelöscht wurde.
quelle
--prune
, was ich sehen kann. Auch proTip: Entfernen Sie nach dem Einfügen von Beispielen unbrauchbare Passwortabfragen.Wenn dieser Fehler "Lokale Referenz kann nicht aktualisiert werden" erneut auftritt, haben Sie möglicherweise eine schlechte Referenz in Ihrem lokalen UND-Master-Repository , selbst nachdem Sie entweder die Antwort von Vojtech Vitek oder Michel Krämer angewendet haben.
In diesem Fall sollten Sie beide Fixes anwenden, ohne dazwischen zu ziehen oder zu drücken ...
Eine dauerhafte Lösung wurde für mich erst erreicht, nachdem beide Fixes vor dem Drücken / Ziehen angewendet wurden.
quelle
Um dies in Kürze zu beantworten, tritt dieses Problem auf, wenn Ihr lokaler Benutzer einige Informationen über die Fernbedienung hat und jemand etwas ändert, wodurch die Fernbedienung und Ihre Änderungen unsynchronisiert werden.
Ich habe dieses Problem erhalten, weil jemand den Remote-Zweig gelöscht und erneut mit demselben Namen erstellt hat.
Um solche Probleme zu beheben, ziehen oder holen Sie von der Fernbedienung.
oder wenn Sie eine GUI verwenden, führen Sie einen Abruf von der Fernbedienung durch.
quelle
Ich konnte damit arbeiten
quelle
Versuche dies:
Branch_Name
, der Zweig, in dem Sie sich gerade befinden.Wenn Sie nur eine
git pull
ausführen, werden auch alle anderen erstellten Zweigstellennamen abgerufen.Ist der Grund, warum Sie dies bekommen:
quelle
Für mich hatte ich einen lokalen Zweig namens
feature/phase2
und der entfernte Zweig wurde benanntfeature/phase2/data-model
. Der Namenskonflikt war die Ursache des Problems, daher habe ich meinen lokalen Zweig gelöscht (Sie können ihn umbenennen, wenn er etwas enthält, das Sie behalten müssen).quelle
Wenn es
git gc --prune=now
dir nicht hilft. (Pech wie ich)Ich habe das Projekt lokal entfernt und das gesamte Projekt erneut geklont.
quelle
Ich benutze Tower und aus irgendeinem Grund war mein Ordnername
.git/refs/remotes/origin/Github
. Durch Ändern in Kleinbuchstaben wurde.git/refs/remotes/origin/github
das Problem behoben.quelle
Ich hatte das gleiche Problem. Ich folge folgenden Schritten
1) Wechseln Sie Ihren Zweig, der ein Problem hat, zu einem anderen Zweig
2) Löschen Sie diesen Zweig
3) erneut auschecken.
Hinweis: - Sie können nicht festgeschriebene Änderungen aufbewahren und wieder zurücksetzen.
quelle
Ich habe verwendet
git prune origin
und das hat die Arbeit gemacht.quelle
Ich hatte das gleiche Problem mit dem Composer-Update. Aber für mich hat es erst funktioniert, nachdem ich den Composer-Cache geleert und den Inhalt des Vendor-Ordners gelöscht habe:
quelle
Beim Versuch, aus einer
git bundle
erstellten Datei zu klonen, trat dieses Problem auf. Keine der anderen Antworten funktionierte, da ich das Repo nicht klonen konnte (daher kam dasgit gc
Entfernen / Bearbeiten von Dateien nicht in Frage).Es gab jedoch eine andere Möglichkeit, dies zu beheben - die Quelldatei einer
.bundle
Datei begann mit:Durch einfaches Entfernen der vierten Zeile mit vim wurde das Problem behoben.
quelle
Ich hatte dieses Problem bei der Verwendung von SourceTree. Ich versuchte erneut zu ziehen und es funktionierte. Ich glaube, ich habe zu schnell Zweige (Kasse) verhext :).
Meine Situation unterscheidet sich ein wenig von der des Posters, da mein Repository relativ kooperativ war und keine offensichtliche Korruption aufwies.
quelle
quelle
Beim Löschen und Erstellen des Repositorys mit demselben Namen trat dasselbe Problem auf. Es hat nur funktioniert, wenn ich die Remote-URL wie unten zurückgesetzt habe.
Überprüfen Sie die Remote-URL:
Jetzt sollten alle Befehle wie gewohnt funktionieren.
quelle
Bin gerade auf das Problem gestoßen.
Fehlerbehebungsmethode: Mit SourceTree auf Windows-Servern können Sie versuchen, es als Administrator auszuführen. Das behebt mein Problem, dass die lokale Referenz in Atlassian Source Tree 2.1.2.5 unter Windows Server 2012 R2 in der Domäne nicht aktualisiert werden kann.
Wenn Sie diese Situation auch replizieren können, zeigt dies, dass das Problem durch ein Berechtigungsproblem verursacht wird. Es ist besser, einen Drilldown durchzuführen und die Hauptursache zu finden - wahrscheinlich gehören einige bestimmte Dateien anderen Benutzern und dergleichen -, andernfalls gibt es einen unerwünschten Nebeneffekt: Sie müssen SourceTree für den Rest der Ewigkeit als Administrator ausführen.
quelle
Schreiben Sie einen bestimmten Fall auf, der dieses Problem verursachen könnte.
Eines Tages habe ich einen Zweig mit dem Namen "feature / subfeature" gepusht, während ich den Zweig "feature" auf der Fernbedienung hatte.
Diese Operation funktionierte einwandfrei ohne Fehler auf meiner Seite, aber als meine Mitarbeiter einen Zweig holten und / oder zogen, hatten sie alle genau die gleiche Fehlermeldung
unable to update local ref
.cannot lock ref 'refs/remotes/origin/feature/subfeature
.Dies wurde gelöst, indem der
feature
Zweig auf remote (git push --delete origin feature
) gelöscht und danngit remote prune origin
auf dem Repo meiner Mitarbeiter ausgeführt wurde, wodurch Nachrichten einschließlich generiert wurden* [pruned] origin/feature
.Ich vermute also, dass ich
git fetch
versucht habe,subfeature
ref in einemfeature
Ordner auf git intern zu erstellen (.git / ...), aber das Erstellen eines Ordners ist fehlgeschlagen, weilfeature
ref bereits vorhanden war.quelle
Dieses Problem trat auf, als ein Entwickler auf einem Mac einen Zweig mit einem Symbol größer als ">" im Filialnamen erstellte.
Dies verursachte Probleme in TeamCity und auf lokalen Windows-basierten Computern, auf denen SourceTree ausgeführt wird. BitBucket ließ es ohne Probleme durch.
Um den Benutzer aufzulösen, wurde der Zweig entfernt und neu erstellt. Welches war schön und einfach.
quelle
Hatte die gleiche Nachricht, aber mit einem Verzeichnis, bekam eine fehlgeschlagene Nachricht beim Ziehen.
git --prone hat mir auch nicht geholfen. Es stellte sich heraus, dass eine Datei mit demselben Namen wie ein remote erstelltes Verzeichnis vorhanden war.
Musste zu .git \ logs \ refs \ remotes \ origin gehen und die Gebietsschemadatei löschen - dann erneut ziehen, alles gut.
quelle