git · Git
Die Meldung
error: cannot lock ref 'refs/remotes/origin/main': is at 8a3f21c but expected 1c2d3e4
Was es bedeutet
Als git einen neuen Wert in eine Remote-Tracking-Referenz schreiben wollte, fand es dort einen anderen Wert als den gerade gelesenen und verweigerte das Überschreiben. Häufig passiert das, wenn Ihr Editor im Hintergrund holt, während Sie ebenfalls holen, oder wenn jemand force-gepusht hat und Ihre Tracking-Referenzen aus dem Takt sind. Den Fetch einfach zu wiederholen genügt meist. git remote prune origin räumt Tracking-Referenzen ab, deren Branches oben nicht mehr existieren; es löscht nur die Kopien in Ihrem eigenen Repository und rührt keinen Branch auf dem Server an.
Die Lösung
git remote prune origin- Ausgegeben von
- git
- Git
- 29
Fast jeder git-Fehler ist eine Verweigerung im Sinne von „das aus diesem Zustand zu tun würde etwas verlieren“; fatal: heißt, git hat ohne jede Änderung abgebrochen, und die hint:-Zeilen unter der ersten enthalten meist die eigentliche Lösung.
Eine Fehlermeldung lesen
- Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
- Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
- Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
- Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
- Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.
Häufige Fragen
Q. Was bedeutet „error: cannot lock ref 'refs/remotes/origin/main': is at 8a3f21c but expected 1c2d3e4“?
Als git einen neuen Wert in eine Remote-Tracking-Referenz schreiben wollte, fand es dort einen anderen Wert als den gerade gelesenen und verweigerte das Überschreiben. Häufig passiert das, wenn Ihr Editor im Hintergrund holt, während Sie ebenfalls holen, oder wenn jemand force-gepusht hat und Ihre Tracking-Referenzen aus dem Takt sind. Den Fetch einfach zu wiederholen genügt meist. git remote prune origin räumt Tracking-Referenzen ab, deren Branches oben nicht mehr existieren; es löscht nur die Kopien in Ihrem eigenen Repository und rührt keinen Branch auf dem Server an.
Q. Wie behebe ich das?
git remote prune origin — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.
Q. Welches Werkzeug gibt das aus?
git. Es gehört zu Git, und die Meldung hat 11 Wörter.