wake-up-neo.com

git pull schlägt fehl "Referenz konnte nicht aufgelöst werden" "Lokaler Ref konnte nicht aktualisiert werden"

Wenn ich mit git 1.6.4.2 einen git pull mache, erhalte ich diesen 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 git remote Prune Origin ausprobiert, aber es hat nicht geholfen.

454
Gabrielle

Bereinigen Sie Ihr lokales Repository mit:

$ git gc --Prune=now
$ git remote Prune Origin

man git-gc (1):

git-gc - Cleanup unnecessary files and optimize the local repository

git gc [--aggressive] [--auto] [--quiet] [--Prune=<date> | --no-Prune]

       Runs a number of Housekeeping tasks within the current repository, such as compressing file revisions
       (to reduce disk space and increase performance) and removing unreachable objects which may have been
       created from prior invocations of git add.

       Users are encouraged to run this task on a regular basis within each repository to maintain good disk
       space utilization and good operating performance.

man git-remote (1):

git-remote - manage set of tracked repositories

git remote Prune [-n | --dry-run] <name>

           Deletes all stale remote-tracking branches under <name>. These stale branches have already been
           removed from the remote repository referenced by <name>, but are still locally available in
           "remotes/<name>".            
727
Vojtech Vitek

Ist mir auch passiert. In meinem Fall war der schlechte Schiedsrichter Master, und ich tat Folgendes:

rm .git/refs/remotes/Origin/master
git fetch

Dadurch hat git die ref-Datei wiederhergestellt. Danach funktionierte alles wieder wie erwartet.

480
Michel Krämer

Dies hat die Arbeit für mich erledigt:

git gc --Prune=now
104
Bernd

Für mich funktionierte es, die fehlerhaften Dateien aus dem Ordner .git/refs/remotes/Origin/ zu entfernen.

59

Führen Sie die folgenden Befehle aus:

rm .git/refs/remotes/Origin/master

git fetch

git branch --set-upstream-to=Origin/master

Nur für den Fall, wenn Sie wissen möchten, was .__ ist. .git/refs/remotes/Origin/master, lesen Sie den Abschnitt Remotes in Git Referenzen .

39

Ich hatte dieses Problem und löste es, indem ich zu der Datei ging, in der es einen Fehler hatte:

\repo\.git\refs\remotes\Origin\master

Diese Datei war voller Nullen, ich habe sie durch den neuesten Ref von Github ersetzt.

34
Noel Tock

In meinem Fall wurde das Problem behoben, nachdem ich alle Entfernungsreferenzdateien im Verzeichnis .git gelöscht habe.

Wenn Sie sich die Nachricht ansehen, erfahren Sie, welche Dateien (speziell) Sie 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

git gc --Prune=now

Danach funktioniert alles gut.

32
Uri Shtand

Ich möchte nur hinzufügen, wie es passieren kann, dass eine Referenz bricht.

Mögliche Ursache

Wenn auf meinem System (Windows 7 64-Bit) ein BSOD auftritt, werden einige der gespeicherten Referenzdateien (die höchstwahrscheinlich gerade geöffnet/beschrieben werden, wenn BSOD aufgetreten ist) mit NULL-Zeichen überschrieben (ASCII 0).

Wie bereits erwähnt, reicht es aus, die ungültigen Referenzdateien zu löschen und das Repository erneut abzurufen oder erneut abzurufen.

Beispiel

Fehler:cannot lock ref 'refs/remotes/Origin/some/branch': unable to resolve reference 'refs/remotes/Origin/some/branch': reference broken

Lösung: löscht die Datei %repo_root%/.git/refs/remotes/Origin/some/branch

20
Dawid Ferenczy

git fetch --Prune hat diesen Fehler für mich behoben:

[[email protected]] - [~/code/driving] - [Wed May 10, 02:58:25]
[I]> git fetch
error: cannot lock ref 'refs/remotes/Origin/user/janek/integration/20170505': 'refs/remotes/Origin/user/janek/integration' exists; cannot create 'refs/remotes/Origin/user/janek/integration/20170505'
From github.com:zooxco/driving
 ! [new branch]            user/janek/integration/20170505 -> Origin/user/janek/integration/20170505  (unable to update local ref)
From github.com:zooxco/driving
[[email protected]] - [~/code/driving] - [Wed May 10, 02:58:30]
[I]> git fetch --Prune
 - [deleted]               (none)     -> Origin/user/janek/integration

Dies setzt jedoch voraus, dass der betreffende Zweig auf der Remote-Station gelöscht wurde.

17
marczych

Versuch es:

git gc --Prune=now

git remote Prune Origin

git pull
14
annelorayne

Um dies in aller Kürze zu beantworten, dieses Problem tritt auf, wenn Ihr lokaler Kunde Informationen über die Fernbedienung hat und jemand etwas ändert, was die Fernbedienung entfernt und Ihre Änderungen unsynchronisiert. 

Dieses Problem wurde angezeigt, weil jemand den Remote-Zweig gelöscht und erneut mit demselben Namen erstellt hat.

Um solche Probleme zu lösen, führen Sie einen Pull oder Abruf von der Fernbedienung aus.

git remote Prune Origin

wenn Sie eine GUI verwenden, rufen Sie die Remote-Funktion ab.

 enter image description here

8
Abhijeet Kamble

Wenn git gc --Prune=now dir nicht helfen kann. (Pech wie ich)

Was ich tat, ist das Projekt in local zu entfernen und das gesamte Projekt erneut zu klonen.

4
Eric Chen

Ich konnte mit arbeiten 

git remote update --Prune
2
user1238353

Versuche dies:

git pull Origin Branch_Name

Branch_Name, der Zweig, in dem Sie sich gerade befinden.

Wenn Sie nur einen git pull ausführen, werden auch alle anderen erstellten Zweignamen abgerufen.

Das ist der Grund, warum Sie das bekommen:

! [new branch]      split-css  -> Origin/split-css  (unable to update local ref)
2
user3832506

Ich hatte das gleiche Problem. Ich folge den folgenden Schritten 

1) Wechseln Sie Ihre Zweigstelle, die Probleme hat, zu einer anderen Zweigstelle 

2) diesen Zweig löschen 

3) Nochmal checken.

Hinweis: - Sie können nicht festgeschriebene Änderungen speichern und wieder zurücksetzen.

1
user2619659

Für mich hatte ich einen lokalen Zweig mit dem Namen feature/phase2 und der entfernte Zweig hieß feature/phase2/data-model. Der Namenskonflikt war die Ursache des Problems, daher habe ich meinen lokalen Zweig gelöscht.

1
Nathan Wallace

Ich habe git Prune Origin verwendet und das hat die Arbeit gemacht.

1
TheFakeCake

Ich hatte das gleiche Problem mit dem Composer-Update. Bei mir funktionierte es jedoch erst, nachdem ich den Composer-Cache gelöscht und den Inhalt des Lieferantenordners gelöscht hatte:

rm -rf vendor/*
git gc --Prune=now
git pull
composer clear-cache
composer update my/package
0
ownking

Das gleiche Problem trat auf, als das Repository gelöscht und mit demselben Namen erstellt wurde. Es funktionierte nur, wenn ich {die Remote-URL neu einstellen wie unten beschrieben;

git remote set-url Origin [GIT_REPO_URL]

Überprüfen Sie die Remote-URL:

git remote -v

Jetzt sollten alle Befehle wie gewohnt funktionieren.

0
Ricky Boy

Ich hatte dieses Problem bei der Verwendung von SourceTree. Ich versuchte wieder zu ziehen und es hat funktioniert. Ich glaube, ich war zu schnell mit Ästen (Kasse) :).

Meine Situation unterscheidet sich ein wenig von der des Posters, da mein Repository relativ kooperativ war, ohne offensichtliche Korruption.

0
Pysis

Dieses Problem trat auf, als ein Entwickler auf einem Mac einen Zweig mit einem Symbol größer als ">" im Zweignamen erstellte.

Dies verursachte Probleme in TeamCity und auf lokalen Windows-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.

0
dylanT
 # remove the reference file of the branch "lost"
 rm -fv ./.git/refs/remotes/Origin/feature/v1.6.9-api-token-bot-reader

 # get all the branches from the master
 git fetch --all

 # git will "know" how-to handle the issue from now on
 #     From github.com:futurice/senzoit-www-server
 # * [new branch]      feature/v1.6.9-api-token-bot-reader ->
 # Origin/feature/v1.6.9-api-token-bot-reader

 # and Push your local changes
 git Push
0
Yordan Georgiev

Schreiben Sie einen speziellen Fall auf, der dieses Problem verursachen könnte.

Eines Tages habe ich einen Zweig mit dem Namen "Feature/Subfeature" gepusht, während der Zweig "Feature" auf der Fernbedienung vorhanden ist.

Diese Operation funktionierte einwandfrei ohne Fehler von meiner Seite, aber als meine Kollegen einen Zweig abholten und/oder einen Zweig abholten, hatten sie alle dieselbe Fehlermeldung unable to update local ref, cannot lock ref 'refs/remotes/Origin/feature/subfeature.

Dies wurde gelöst, indem der Zweig feature auf der entfernten Station (git Push --delete Origin feature) gelöscht und anschließend git remote Prune Origin auf dem Repo meiner Kollegen ausgeführt wurde, wodurch Meldungen einschließlich * [pruned] Origin/feature generiert wurden.

Meine Vermutung ist, dass git fetch versucht hat, subfeature ref im feature-Ordner auf git intern (.git/...) zu erstellen, aber das Erstellen des Ordners ist fehlgeschlagen, da feature ref bereits vorhanden war.

0
ik1ne

Dieses Problem beim Versuch, aus einer git bundle-Datei zu klonen, ist aufgetreten. Keine der anderen Antworten funktionierte, da ich das Repo nicht klonen konnte (also git gc und das Entfernen/Bearbeiten von Dateien nicht in Frage kam).

Es gab jedoch eine andere Möglichkeit, dies zu beheben - die Quelldatei einer .bundle-Datei begann mit:

# v2 git bundle
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d HEAD
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master

PACK.......p..x...Kj.0...: (and so on...)

Durch Entfernen der vierten Zeile mit vim wurde das Problem behoben.

0

Ich bin heute auf das Problem gestoßen.

Problembehandlungsmethode: Mit SourceTree auf Windows-Servern können Sie versuchen, es als Administrator auszuführen. Damit ist mein Problem behoben, dass "local ref" 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 befinden sich bestimmte Dateien im Besitz anderer Benutzer und ähnliches. Andernfalls gibt es einen unerwünschten Nebeneffekt: Für den Rest der Ewigkeit müssen Sie SourceTree als Administrator ausführen.

0
Lionet Chen