645 Stimmen

Wie kann ich den Git-Fehler "Objektdatei ... ist leer" beheben?

Wenn ich versuche, Änderungen zu übertragen, erhalte ich diesen Fehler:

error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt

Ich habe versucht git fsck Das habe ich:

error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt

Wie kann ich diesen Fehler beheben?

3voto

androidevil Punkte 8720

In meinem Fall trat dieser Fehler auf, weil ich die Commit-Nachricht eingegeben habe und mein Notebook ausgeschaltet war.

Ich habe diese Schritte durchgeführt, um den Fehler zu beheben:

  • git checkout -b backup-branch # Einen Backup-Zweig erstellen
  • git reset --hard HEAD~4 # Reset to the commit where everything works well. In meinem Fall musste ich vier Commits im Kopf zurücksetzen, das heißt, bis mein Kopf an dem Punkt war, bevor ich die Commit-Nachricht geschrieben habe. Bevor Sie diesen Schritt ausführen, kopieren Sie den Hash der Commits, die Sie zurücksetzen wollen. In meinem Fall habe ich den Hash der vier letzten Commits kopiert .
  • git cherry-pick <commit-hash> # Cherry pick die zurückgesetzten Commits (in meinem Fall sind es vier Commits, also habe ich diesen Schritt viermal gemacht) aus dem alten Zweig in den neuen Zweig.
  • git push origin backup-branch # Schieben Sie den neuen Zweig, um sicherzustellen, dass alles gut funktioniert.
  • git branch -D your-branch # Löschen Sie den Zweig lokal ('Ihr-Zweig' ist der Zweig mit dem Problem)
  • git push origin :your-branch # Den Zweig aus der Ferne löschen
  • git branch -m backup-branch your-branch # Benennen Sie den Backup-Zweig so um, dass er den Namen des Zweigs trägt, bei dem das Problem aufgetreten ist.
  • git push origin your-branch # Schieben Sie den neuen Zweig
  • git push origin :backup-branch # Löschen Sie den Backup-Zweig von remote

2voto

JattCode113 Punkte 82

Ich habe meinen Git-Fehler behoben: Objektdatei ist leer durch:

  1. Speichern einer Kopie aller Dateien, die ich seit meinem letzten erfolgreichen Commit/Push bearbeitet habe,
  2. Entfernen und erneutes Klonen meines Repositorys,
  3. Ersetzen der alten Dateien durch meine bearbeiteten Dateien.

2voto

k441i Punkte 21

Eigentlich hatte ich das gleiche Problem.

Erstellen Sie eine Kopie Ihres Codes, bevor Sie dies versuchen.

Ich habe gerade git reset HEAD~

Und meine letzte Übertragung wurde rückgängig gemacht. Dann habe ich es erneut übertragen, und das Problem war gelöst!

2voto

GeorgeKaf Punkte 519

Ich hatte das gleiche Problem nach meinem VM abgestürzt und die Git-Dateien wurden beschädigt.

Erster Schritt, aus dem Root-Ordner des Projekts.

find .git/objects -type f -empty -delete

Dann eine Pflaume und ein Fetch...

git prune
git fetch --all --prune

Und ein paar Rollbacks, und es hat funktioniert.

2voto

ashiqs Punkte 81

In dieser Situation löse ich mein Problem, indem ich diese Frage befolge.

  1. Löschen Sie den Ordner .git aus meinem Repository-Verzeichnis. (Backup zur Sicherheit aufbewahren)
  2. mein Repo in ein anderes Verzeichnis klonen.
  3. Kopieren Sie den .git-Ordner aus dem neuen geklonten Verzeichnis.
  4. in mein vorheriges Verzeichnis einfügen, in dem das Problem auftritt.

Prüfen Sie den Git-Status, hoffentlich sehen Sie alle Änderungen. Jetzt können Sie die Änderungen übertragen und pushen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X