Git beschädigt repo: wie man einen git-Objekt aus einem sauberen repository
Dies ist eine der zahlreichen Fragen, ein Git-repo, die beschädigt ist, ist gerade ein loser-Objekt, das ging schief:
$ git gc
Counting objects: 3299, done.
error: inflate: data stream error (unknown compression method)
error: unable to unpack 831a5d31af4a0af2f5a367689bee27a44efc22c9 header
Delta compression using up to 6 threads.
Compressing objects: 100% (3283/3283), done.
error: inflate: data stream error (unknown compression method)
fatal: loose object 831a5d31af4a0af2f5a367689bee27a44efc22c9 (stored in .git/objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9) is corrupt
error: failed to run repack
Folgenden vorhandenen Antworten auf das Thema (Wie gehe ich mit den beschädigten git-Objekt-Dateien?, Wie zu beheben beschädigte git-repository?, oder Was kann ich mit Git Korruption aufgrund eines fehlenden Objekts?) habe ich bereits entfernt das Objekt 831a5d31
aus der beschädigten repository.
In meinem Fall habe ich einen Klon des repositories, das scheint zu halten das Objekt fehlt mir, aber es gibt keine Datei auf objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9
. Wie kann ich das Problem beheben meinem repository?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Datei vorhanden ist, die anderswo
Gegenstand des sauber-repository wurde umgepackt, das ist, warum es nicht mehr existiert als eine Datei.
Wiederherstellen, müssen Sie zuerst speichern Sie es als eine Datei, von der sauberen repository, mit
Bewegen
831a5-file
im beschädigten repo, und führen SieStellen Sie sicher, dass der SHA1-Hash in der Ausgabe ist
831a5d31af4a0af2f5a367689bee27a44efc22c9
Store-Objekt, und das repository ist behoben!
Wenn die Datei nicht vorhanden ist, die anderswo
Wenn die Datei nicht vorhanden ist, die anderswo, d.h. die Beschädigung aufgetreten ist, nachdem verpflichten, aber bevor Sie waren in der Lage zu schieben, es ist ein Weg zur Wiederherstellung Ihrer repo-und re-commit der änderungen. Sehen diese Antwort zu einer verwandten Frage.
git cat-file tree <hash> > temp
git hash-object -t tree -w temp
object
Dateien wie angegeben durchgit fsck
haben