Ich kann keine Änderung vornehmen:
$ git commit
error: invalid object 100644 13da9eeff5a9150cf2135aaed4d2e337f97b8114 for 'spec/routing/splits_routing_spec.rb'
error: Error building trees
Ich habe es bisher versucht:
$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114
und auch:
$ git prune
error: Could not read 1394dce6fd1ad15a70b2f2623509082007dc5b6c
fatal: bad tree object 1394dce6fd1ad15a70b2f2623509082007dc5b6c
und auch:
$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114
aber nichts half. Soll ich die Datei löschen, festschreiben und wieder einführen? Ich bin bereit, ein bisschen Geschichte zu verlieren, wenn es Git Commit zurückbringt.
Antworten:
Möglicherweise befindet sich ein beschädigtes Objekt in Ihrem Git-Repository.
Wenn Sie eine Fernbedienung oder andere Klone dieses Repositorys haben, können Sie von dort aus die problematische Datei abrufen und sie einfach in Ihrem lokalen Repo ersetzen.
Die gewünschte Datei befindet sich in:
quelle
/local/.git/objects/13/
) und eine Kopie davon von meinem Remote-Repo kopiert. Es hat den Trick gemacht und alles funktioniert wieder! dankegit hash-object -w spec/routing/splits_routing_spec.rb
git hash-object -w
(für mich) besser funktioniert hat.Dieser Fehler bedeutet, dass Sie eine Datei mit Hash
13da9eeff5a9150cf2135aaed4d2e337f97b8114
haben und dieser Hash nicht vorhanden.git/objects/../
oder leer ist. Als dieser Fehler auftrat, hatte ich nur diesen Hash im Fehler, ohne den Dateipfad. Dann habe ich versuchtgit gc --auto
undgit reset --hard
. Nach einem dieser Befehle (diese Befehle haben mein Problem nicht behoben) habe ich den Pfad der Datei erhalten, die den Fehler auslöst.Sie müssen nur den Objekt-Hash generieren:
Weitere Informationen finden Sie in der Dokumentation . In der Dokumentation gibt es eine zusätzliche Möglichkeit, diesen Fehler zu beheben.
PS Dies war der einzige Weg, der für mich hilfreich war.
quelle
git reset --hard
sollte Ihr Repository wieder normalisieren, aber Sie werden nicht festgeschriebene Änderungen verlieren.quelle
Wenn die problematische Datei durch Ihre Änderung hinzugefügt wird, können Sie sie einfach aus dem Index entfernen und erneut hinzufügen:
quelle
fatal: ambiguous argument 'path/to/file.ext': unknown revision or path not in the working tree.
NachrichtFür mich war es nur eine Berechtigungsfrage. Wenn ich mit renne
sudo
, hat es funktioniert. Vielleicht etwas mit der Mac-Umgebung zu tunquelle
In meinem Fall habe ich es gelöst durch:
quelle
Dies kann durch Synchronisierungs-Apps von Drittanbietern wie Dropbox und Jianguoyun verursacht werden. Aufgrund meiner Erfahrung kann es zwei Möglichkeiten geben:
quelle
Einfache Umgehungslösung: Wenn Sie sich nicht wirklich mit der Spur der Datei befassen, können Sie die Datei duplizieren und das Original entfernen, zuerst das Löschen und Hinzufügen festschreiben und dann wieder in Original umbenennen.
Git sollte normal wieder aufgebaut werden
quelle
In meinem Fall ist die Datei im Remote-Zweig fehlerhaft. Ich habe es gelöst durch:
$ git remote rm origin
$ git remote add origin <the-remote-url>
$ git fetch origin
develop
):$ git reset --hard origin/develop
Dann geht alles wieder normal.
quelle
In meinem Fall lag dies an einer anderen Version von git. Ich hatte mein Repository über den offiziellen Windows-Port von Git verwendet und begann, den MinGW-Port mit derselben Versionsnummer zu verwenden.
Dieses Problem trat auf, als ich versuchte, mich mit MinGW git zu verpflichten. Das Zurückschalten auf Windows Git löste das Problem.
quelle
Damit erstellt git ein Sha1 für die Datei.
quelle