Seitenanfang

Git fatal: bad object refs/remotes/origin/HEAD

Einer meiner lokalen Git-Checkouts lieferte plötzlich bei jedem Befehl eine Fehlermeldung. Der jeweilige pull/commit/push wurde ausgeführt, aber trotzdem kann eine Fehlermeldung kein Normalzustand sein.

Git_gc_error.pngDer wohl am häufigsten benutzte Git-Befehl überhaupt dürfte pull sein. Dabei werden alle Änderungen des aktuellen Branches (bei mir meistens master) vom Quell-Repository übernommen. Ich mache das täglich zigfach, aber ein Repository fing auf einmal an, dabei zwei Fehlermeldungen zu werfen:

Erst kam:

remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 6), reused 4 (delta 0), pack-reused 0
Entpacke Objekte: 100% (20/20), Fertig.
Von gitlab.xxx:xxxxx/xxxxxxxx
fcd738875..79f8fab33 master -> origin/master
02a181b7f..cb1960479 feature-166610 -> origin/feature-166610
* [neuer Branch] feature-174349 -> origin/feature-174349
Die Datenbank des Repositories wird für eine optimale Performance im
Hintergrund komprimiert.
Siehe "git help gc" für manuelles Aufräumen.
Aktualisiere fcd738875..79f8fab33
Fast-forward
Die Datenbank des Repositories wird für eine optimale Performance im
Hintergrund komprimiert.
Siehe "git help gc" für manuelles Aufräumen.

fatal: bad object refs/remotes/origin/HEAD
fatal: failed to run repack
app/Resources/views/Pages/XXX.html.twig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Danach dann nur noch:

$ git pull
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 6), reused 4 (delta 0), pack-reused 0
Entpacke Objekte: 100% (20/20), Fertig.
Von gitlab.xxx:XXXXX/XXXXXXXX
fcd738875..79f8fab33 master -> origin/master
Die Datenbank des Repositories wird für eine optimale Performance im
Hintergrund komprimiert.
Siehe "git help gc" für manuelles Aufräumen.
Aktualisiere fcd738875..79f8fab33
Fast-forward
Die Datenbank des Repositories wird für eine optimale Performance im
Hintergrund komprimiert.
Siehe "git help gc" für manuelles Aufräumen.
warning: Die letzte Ausführung von "gc run" enthielt die folgenden Meldungen.
Bitte beheben Sie das Hauptproblem und löschen Sie .git/gc.log.
Ein automatischer Cleanup wird nicht ausgeführt, bis diese Datei entfernt
wurde.
fatal: bad object refs/remotes/origin/HEAD
fatal: failed to run repack
[...]
4 files changed, 7 insertions(+), 8 deletions(-)

Der erste Ansatz ist natürlich, dem Hinweis zu folgen und die Datei .git/gc.log zu löschen. In der Vergangenheit hatte das bereits mal geholfen und der nächste git gc lief erfolgreich durch.

Dieses Mal aber nicht, der Fehler kam immer wieder. Als Ursache stellt sich schließlich heraus, dass wir kürzlich für ein Update den master - Branch zunächst in einen master_73 ausgecheckt hatten und nach der Aktualisierung den master_73 in den neuen master umbenannt haben. Damit stimmte die Referenz auf den Gitlab-Server nicht mehr und aus irgendwelchen Gründen führte das genau und nur in der Git garbage collection zum Fehler.

Die Lösung war dann ganz einfach: In der Datei .git/refs/remotes/origin/HEAD musste nur der dort stehende Name des Ursprungsbranches des alten master (welcher auch ander hieß) auf den aktuellen geändert werden. Jetzt steht dort:

ref: refs/remotes/origin/master

Danach mussten die .git/gc.log noch einmal gelöscht und git gc gestartet werden. Dieser Lauf war erfolgreich und Git läuft jetzt wieder ohne Warnungen und Fehlermeldungen.

 

Noch keine Kommentare. Schreib was dazu

Schreib was dazu

Die folgenden HTML-Tags sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>