2012-04-09 7 views
35

Ich habe nur Zweig Master und im diesen Fehler jedes Mal, wenn ich versuche, „git pull“:Git Fehler auf Git-Pull (nicht in der Lage lokalen ref zu aktualisieren)

error: Couldn't set refs/remotes/origin/master 
From /var/lib/git/xxx/project 
! a0f80ea..49177a3 master  -> origin/master (unable to update local ref) 

und wenn ich das tue „Git-Pull-Ursprung „Master i erhalten:

error: Couldn't set ORIG_HEAD 
fatal: Cannot update the ref 'ORIG_HEAD'. 

i gesucht haben, aber kann nicht finden, warum

+2

Wo ist das lokale Repository? Haben Sie es als einen anderen Benutzer erstellt als den, den Sie zum Ausführen des Pull verwenden? Es klingt wie ein Dateiberechtigungs-Problem. – tpg2114

+0

Yeah du bist direkt nachdem du gesagt hast der Besitzer der Projektdateien war ein anderer Benutzer, jetzt scheint meine Frage so dumm, aber du hast mir die Antwort gegeben, bitte mach eine Antwort um sie als die beste zu wählen;) – user115561

+0

bitte @ tpg2114 hinzufügen dies als eine Antwort, um es zu wählen – user115561

Antwort

6

der Benutzer sicherstellen, dass die git pull ist der gleiche Benutzer ausgeführt wird, die das Repository erstellt. Die Dateiberechtigungen sind falsch.

+0

Für mich musste ich den Besitzer der Dateien im Repo ändern, den ich versuchte, git den richtigen Benutzer mit chown einzuziehen. Ich denke, das ist im Grunde das, was du gesagt hast, obwohl es für mich nicht offensichtlich war, als ich das las. – Dee

+0

Ich stimme dem zu, überprüfen Sie, dass Besitzer und Gruppe auf Benutzer gesetzt sind, die ".git" repo ziehen (passiert, wenn Sie einen Zweig als "root" gezogen haben), ein "sudo chown -R" hat den Job in meinem Fall erledigt. –

0

Dieser Fehler mit (lokale Referenz kann nicht aktualisiert werden) kann auch passieren, wenn Sie kürzlich Passwörter geändert haben und es einige interessante Dinge gibt, die Ihre Windows- und Linux-Logins integrieren.

4

Ich entdeckte die gleiche Fehlermeldung, die versucht, von einem Bitbuck Repo in meine lokale Kopie zu ziehen. Es gibt auch nur eine Branche Meister und der Befehl git pull origin master führen zu dieser Fehlermeldung

From https://bitbucket.org/xxx 
* branch   master  -> FETCH_HEAD 
error: Couldn't set ORIG_HEAD 
fatal: Cannot update the ref 'ORIG_HEAD'. 

Lösung als

  1. git reflog finden folgt die Nummer des letzten
  2. git reset --hard <numnber> wieder auf den letzten Commit begehen
  3. git pull origin master erneut ohne Fehler ziehen
+0

Geben Sie diesem Mann eine Glocken, beste Antwort – surfer190

94

Mein Team und ich sind in diesen Fehler geraten, nicht in der Lage, lokale Ref zu aktualisieren, wenn Sie in SourceTree ziehen.

Wir benutzten:

git gc --prune=now 

Diese alle doppelten Referenzobjekte entfernt, die das Problem beheben sollte.

Hier sind ein paar Links, wo Sie mehr über git Referenzen und Beschneiden lernen können:

:

git tip of the week

git-prune documentation

git references

+0

Arbeitete für mich auch, die gleiche Nachricht, Sourcetree auf Windows 7 –

+0

Dieser Befehl funktionierte ausgezeichnet .. danke Ihnen –

18

I wie unten gelöst git remote prune origin

+1

Eureka! Es hat tatsächlich funktioniert. Es hat etwas mit umbenannten Remote-Niederlassungen oder etwas zu tun. Ich werde es nicht versuchen und erklären. – TheSoftwareJedi

+0

Das war es für mich, 'git gc --prune = now' hat nichts gemacht –

1

Klonen Sie das Repository erneut und kopieren Sie den .git-Ordner in Ihr defektes Projekt.

0

Das ist mir auf OSX passiert, wo ich ein Dateisystem ohne Berücksichtigung der Groß-/Kleinschreibung verwende. Irgendwie hat ein anderer Entwickler einen Zweig mit dem gleichen Namen aber anderem Fall gedrängt: My-Branch vs my-branch.

Ich hatte schon My-Branch ausgecheckt und bekam die Fehlermeldung „nicht in der Lage lokalen ref zu aktualisieren“, wenn ich einen Zug wahrscheinlich tat, weil das Dateisystem My-Branch == my-branch denkt.

Da wir Github verwenden, könnte ich das Problem lösen, indem ich einen der Zweige über Githubs GUI lösche.

+0

In meinem Fall gehörten beide widersprüchlichen Zweige zu einem anderen Benutzer, so dass ich keinen löschen konnte. Stattdessen löschte ich die Datei mit den Zweigreferenzen unter .git \ refs \ remotes, und das behob es (vorübergehend - das Problem wird jedes Mal wieder auftreten, wenn ich ziehe, bis der andere Benutzer einen seiner Zweige löscht). –

0

Sprechen von einem PC-Benutzer - Reboot.

Ehrlich gesagt funktionierte es für mich. Ich habe zwei seltsame Git Probleme gelöst, die ich auf diese Weise für Korruption hielt.

0

Ich hatte das gleiche Problem auf meinem Debian-Server, da die Festplatte voll ist. Es konnte keine temporäre Datei erstellt werden, da auf dem Gerät kein Speicherplatz mehr verfügbar ist. Nach der Reinigung einiger Dateien funktionierte es gut.

Verwandte Themen