Git: remote: fatal: Indexdatei beschädigt, „Index verwendet yz-Erweiterung“?

Lesezeit: 5 Minuten

Ich bin gerade auf ein Problem gestoßen, das ich noch nie zuvor gesehen habe, und kann keine Hilfe finden.

Ich betreibe ein Git-Master-Repo auf der Live-Website in unserer Hosting-Umgebung und ein Bare-Origin-Repo auf demselben Server. Alle unsere Entwickler-Commits gehen an den Bare-Origin-Master, der einen Post-Receive-Hook hat, um jeden Commit an das Master-Repository zu pushen, sodass sich der Push in den Live-Site-Dateien widerspiegelt. Das einzige Ärgerliche ist, dass wir jedes Mal, wenn wir WordPress-Updates erhalten, das Master-Repo festschreiben und es dann zurück zum Ursprungs-Repo schieben müssen, damit unsere Entwickler diese aktualisierten Dateien herunterladen können.

Problem: Heute wollte ich ein WordPress-Plugin-Update übertragen, und das Übertragen funktionierte gut, aber der Push gab den folgenden kryptischen Fehler, zu dem ich keine Hilfe finden kann:

git push origin master

Counting objects: 344, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (323/323), done.
Writing objects: 100% (344/344), 1.76 MiB | 5.61 MiB/s, done.
Total 344 (delta 237), reused 14 (delta 1)
remote: Resolving deltas: 100% (237/237), completed with 226 local objects.
remote: Running post-receive (git pull origin master):
remote: error: index uses ▒yz▒ extension, which we do not understand
remote: fatal: index file corrupt

(Die seltsamen Symbole um die Buchstaben “yz” lauten als “<B3>yz<AC>” wenn ich git diff starte)

Wenn ich laufe git status auf master (kann nicht auf origin ausgeführt werden, da es sich um ein bloßes Repo handelt), werden die letzten beiden Ausgabezeilen wiederholt. Wenn ich laufe git log Auf beiden Repos sehen sie normal aus, aber der Ursprung ist natürlich ein Commit hinter dem Master, weil das Commit zum Master funktioniert hat, aber das Pushen zum Ursprung fehlgeschlagen ist.

Ich habe noch nie von dieser “yz”-Erweiterung gehört, und soweit ich das beurteilen kann, hat auch niemand sonst etwas davon gehört. Alles, was ich getan habe, war ein Commit und ein Push, und der Push ist fehlgeschlagen. Wir verwenden keine solche “yz”-Erweiterung, wir verwenden Vanilla Git, machen sehr einfache Pushs und Pulls, unser Post-Receive-Hook ist etwa ein 5-Zeilen-Skript, das einfach jeden Commit automatisch vom Ursprung zum Master pusht und die Dateiberechtigungen auf zurücksetzt Stellen Sie sicher, dass sie vom Webserver gelesen werden können. Das einzig Seltsame, was wir tun, ist die Verwendung von Git, um eine WordPress-Site für die Versionskontrolle zu verwalten. Alle Entwickler verwenden TortoiseGit unter Windows ohne spezielle Einstellungen oder Plugins.

Ich habe viele Fragen und Antworten zu beschädigten Indizes gesehen, aber nichts dergleichen.

Ich habe noch nichts ausprobiert, da ich mir nicht sicher bin, was ich tun soll, die Interna von Git nicht verstehe und nichts kaputt machen möchte, aber wir müssen in der Lage sein, zu ziehen und zu drücken, und können dies nicht, bis die Repos vorhanden sind wieder synchron.

Okay, hier ist, was ich getan habe:

Da ich keine Änderungen am Master-Repo (korrupter Index) verlieren wollte, da die Änderungen beibehalten und auch an den Ursprung (Arbeitsindex) gepusht werden mussten, habe ich Folgendes ausgeführt:

rm .git/index
git reset --mixed

(gemischt ist die Standardoption)

Laut Dokumentation:

--mixed
Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.

Vielen Dank an torek und bk2204 für Ihre Hilfe beim Verständnis der Situation und ein wenig Googeln, um den sichersten Prozess zum Zurücksetzen eines Index herauszufinden, ohne dass festgeschriebene oder funktionierende Dateien verloren gehen

  • Genau dasselbe ist wieder passiert! Ich schätze, Git mag es nicht, ein Repo für eine WordPress-Site zu sein, auf der alle paar Tage Hunderte von Dateien aktualisiert werden, bis das Ganze mehrere Gigabyte erreicht!

    – Rote Geißel

    2. Juni 2020 um 1:59 Uhr

Alles vorangestellt mit remote: kam nicht von dein Git aber ab ihre Git – das Git, das Ihr Git aufgerufen hat, unter der URL, die Sie beim Ausführen verwendet haben git push.

Es ist ihr Git das ist jammern ihren Git-Index. Dies ist wahrscheinlich ein Dateibeschädigungsproblem auf ihrem Computer. Sie müssen sie – wer auch immer „sie“ sind – dazu bringen, ihr System zu überprüfen. Wenn alles in Ordnung aussieht, sollten sie wahrscheinlich einfach ihre Indexdateien entfernen und neu erstellen.

(Wenn “they”https://stackoverflow.com/”them” wirklich Sie sind, gehen Sie zu den beteiligten Computern, untersuchen Sie sie sorgfältig auf Schäden oder brennende Festplatten oder was auch immer, und ob alles gut aussieht , entfernen Sie die Indexdateien und erstellen Sie sie neu.)

  • Beide Repos befinden sich auf derselben Maschine, über die ich die volle Kontrolle habe. Wenn ich “git status” auf dem Live-Website-Repo ausführe, das Dateien für das Internet bereitstellt, erhalte ich den Fehler, und das Ursprungs-Repo ist in Ordnung, aber es fehlt das neueste Commit. Der Server ist ein virtueller Server, der auf einem RAID 10 mit 4 Laufwerken läuft, was vollkommen in Ordnung ist, also werde ich wohl versuchen, den Index neu zu erstellen. Haben Sie eine Ahnung, was diese “yz” -Erweiterungssache bedeutet?

    – Rote Geißel

    3. April 2020 um 23:28 Uhr


  • Die Git-Indexdatei unterstützt eine Vielzahl von Erweiterungen, z. B. für geteilten Index und nicht nachverfolgten Cache, und sie sind alle durch Vier-Byte-Werte typisiert. 0xb3797aac ist keine gültige Erweiterung, und Git weiß nicht, ob sie ignoriert werden kann, also schlägt sie fehl.

    – bk2204

    3. April 2020 um 23:34 Uhr


  • Gibt es eine Möglichkeit, die Repo-Dateien auf den vorherigen Commit zurückzusetzen, ohne alle tatsächlichen Quelldateien zu verlieren, die sich seitdem geändert haben, oder den Index des Master-Repos neu zu erstellen, ohne Quelldateien zu ändern oder das Master-Repo auf andere Weise nicht mehr synchron zu machen? sein Ursprungs-Repo?

    – Rote Geißel

    3. April 2020 um 23:41 Uhr

  • Ich habe es behoben. Der Standard-Indexneuaufbau hat es wie gesagt behandelt, nachdem das Repo für alle Fälle gesichert wurde. Danke Leute!

    – Rote Geißel

    3. April 2020 um 23:53 Uhr

  • @RedScourge: Ich war AFK, aber ich sehe, Sie haben es in den Griff bekommen. Es ist immer noch sehr seltsam, einen Junk-“Erweiterungs” -Wert in der Indexdatei zu sehen: Was hat ihn dort abgelegt?

    – Torek

    4. April 2020 um 5:39 Uhr


1446580cookie-checkGit: remote: fatal: Indexdatei beschädigt, „Index verwendet yz-Erweiterung“?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy