Ich habe ein Problem mit Git unter Windows Azure. Git-Status zeigt - "fatal: schlechtes Objekt HEAD" und ich habe versucht zu laufen:
git fsck --full
git gc
Aber git fsck
zeigt:
broken link from commit 739df633f185ce5d1ab7eb97d619b28e7d81185a
to tree 2a6d4876d135c1fa7cbe1348c62570006e895fc5
broken link from commit 9c7eae5ffed34dbfac977e515dee675626b59f93
to tree 400132d215ab9aced883a9971e648b82624b2032
broken link from commit 9c7eae5ffed34dbfac977e515dee675626b59f93
to commit 4a49af0a0cb64a0a0415734b11772d6df18561fb
broken link from commit bc3072f30e71c616a8196089e19a67a2c9c0a5ad
to tree 0aa813c183487d0a1b1f7ae81501ca7a1168283f
broken link from commit d3bb4f8545e91ec8ace15ad31a3147d92a1d4242
to tree 4682108accd8e72fe68858232386dffe60f9f02d
broken link from commit 6b34795c4b54286301bcdc0ed254a04c132cb2ad
to tree 5c57dd3222d11924dba841d3cae517bdc9220601
broken link from commit d70172d855391b93bc1c5eeb9b4226df525dfc6e
to commit 390c8cbd527c8e707c51e25142e54421f4dd3948
broken link from commit cc05e8d2e3733693ebb67d697ae4b65e51fea79a
to commit 32f081f8b901425fd1e8898478f0551970bee0f5
broken link from tree 6a75ed6d0311d800078e77f43d427d128372d5bc
to blob 4a064d610c0e7207967d59934c8bc5f491f26dae
broken link from tree 6a75ed6d0311d800078e77f43d427d128372d5bc
to tree 5c06ec964dcbade49287d0f36efe1f7b60f446e3
broken link from tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
to blob 3e1fb421613dc9066cbf9c95eddc61619a9f8eed
broken link from tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
to tree 556a50048d42346c283c94b78ea278ba1d57d251
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b
to blob 3abf3c48ada45f63404dcf4d675ddfdadcfa83c6
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b
to blob 3fa569892003b468ed1301426dd6d96d9644be3c
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b
to blob 0a9a54a51e84f3bc34122dbce1146d895fcbe22c
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b
to blob 3fa48873564361b4d95830803ae77f79eeafaf5b
git branch
zeigt - * Meister
.git/HEAD
, wie739df633f185ce5d1ab7eb97d619b28e7d81185a
oderref: refs/heads/master
(wenn dermaster
Zweig in Ordnung ist). Es ist jedoch unwahrscheinlich, dass das Repository repariert wird.git fsck
bereits für mich behoben. Danke 😅Antworten:
Ihr Repository ist beschädigt. Das bedeutet, dass Daten verloren gehen, die von git selbst nicht wiederhergestellt werden können. Wenn Sie einen anderen Klon dieses Repositorys haben, können Sie die Objekte von dort wiederherstellen oder einen neuen Klon erstellen.
fatal: bad object HEAD
bedeutet, dass der von HEAD referenzierte Zweig auf ein fehlerhaftes Festschreibungsobjekt verweist, was bedeuten kann, dass es fehlt oder beschädigt ist.An der Ausgabe von
git fsck
können Sie erkennen, dass einige Tree-, Blob- und Commit-Objekte fehlen.Beachten Sie, dass die Verwendung von git selbst nicht ausreicht, um die Datensicherheit zu gewährleisten. Sie müssen es in Fällen von Korruption noch sichern.
quelle
versuchen Sie dies: arbeitete für mich
rm -rf .git
Sie können
mv
anstelle von verwenden,rm
wenn Sie Ihre versteckten Commits nicht verlieren möchtenKopieren Sie dann .git von einem anderen Klon
cp <pathofotherrepository>/.git . -r
dann mach
git init
Dies sollte Ihr Problem lösen, ALLES BESTE
quelle
mv
stattdessenrm -rf
versuchen, etwas Letzteres wiederherzustellen ;-)mv
instaed verwendenrm
, danke Kumpel :-)Dies geschah, weil ich versehentlich eine Kerndatei von GIT entfernt habe. Versuchen Sie das, es hat bei mir funktioniert.
Git neu initialisieren
Daten von der Fernbedienung abrufen
Überprüfen Sie nun alle Ihre Änderungen und den Git-Status von
quelle
git fetch
musste ich einengit pull
Schnellvorlauf durchführen (es heißt, mein Baum steht hinter HEAD), bevorgit status
ich etwas Nützliches sehen konnte.Laufen
gefolgt von
quelle
master
nach umbenanntmain
. Diese Antwort löste das Problem.git fetch
, danngit merge origin/HEAD
danngit push
für mich gearbeitet.Ihr Repository ist kaputt. Aber Sie können es wahrscheinlich beheben UND Ihre Änderungen beibehalten:
cp your_repository your_repositry_bak
git clone your_repository your_repository_clone
rm -rf your_repository/.git && cp your_repository_clone/.git your_repository/ -r
rm -r your_repository_*
quelle
In meinem Fall kam der Fehler aus dem Nichts, ließ mich aber nicht zum Remote-Zweig schieben.
Und das hat es gelöst.
Ich bin damit einverstanden, dass dies das Problem möglicherweise nicht für alle löst, aber bevor Sie einen komplexeren Ansatz ausprobieren, versuchen Sie es mit diesem, nichts zu verlieren.
quelle
du -s .git
.git- Verzeichnis soll mit zwei Knoten auf Client14.2M
und3.8M
auf Client2 synchronisiert werden. Ich weiß nicht, warum oder wie Synchronisierungsclients es schaffen, Dateien imIch hatte ein ähnliches Problem und für mich funktionierte es, einen neuen Klon aus meinem ursprünglichen Repository zu erstellen
quelle
Ich habe es geschafft, ein ähnliches Problem zu beheben, als einige der Git-Dateien beschädigt waren:
https://stackoverflow.com/a/30871926/1737957
Suchen Sie in meiner Antwort auf diese Frage nach dem Teil, in dem ich dieselbe Fehlermeldung wie hier hatte:
Sie könnten versuchen, dem zu folgen, was ich von diesem Punkt an getan habe. Stellen Sie sicher, dass Sie zuerst den gesamten Ordner sichern.
Natürlich könnte Ihr Repository auf ganz andere Weise beschädigt sein, und was ich getan habe, wird Ihr Problem nicht lösen. Aber es könnte Ihnen einige Ideen geben! Git-Interna scheinen magisch zu sein, aber es sind wirklich nur eine Reihe von Dateien, die wie alle anderen bearbeitet, verschoben und gelöscht werden können. Wenn Sie eine gute Vorstellung davon haben, was sie tun und wie sie zusammenpassen, haben Sie gute Erfolgschancen.
quelle
Ich habe das gelöst, indem ich Git Fetch gemacht habe. Mein Fehler war, dass ich meine Datei von meinem Hauptspeicher in meinen sekundären Speicher unter Windows 10 verschoben habe.
quelle
Erstellen Sie eine Kopie Ihres Git-Verzeichnisses auf Ihrem lokalen Host und führen Sie
git init
es erneut aus. Schieben Sie das Projekt in ein brandneues Repository.quelle
Ich habe dieses Problem gelöst, indem ich die Zweigstellendaten (mit den Fehlern) in den lokalen Git-Ordner meines Apple-Laptops kopiert habe.
Irgendwie im Terminal und beim Ausführen: git status, sagt mir spezifischere Daten, wo der Fehler auftritt. Wenn Sie unter die Fehler schauen, sehen Sie hoffentlich eine Liste der fehlerhaften Ordner. In meinem Fall zeigte GIT den Ordner an, der für den Fehler verantwortlich war. Es ist mir gelungen, diesen Ordner zu löschen und die Zweigstelle festzuschreiben. Der Git-Status funktionierte wieder, die anderen Geräte wurden durch Git-Pull aktualisiert. Alles funktioniert wieder auf jeder Maschine.
Hoffentlich funktioniert das auch bei Ihnen.
quelle
Es ist unwahrscheinlich, dass dies die Ursache für Ihr Problem ist. Wenn Sie jedoch in .NET arbeiten, erhalten Sie eine Reihe von
obj/
Ordnern. Manchmal ist es hilfreich, alle diese zu löschenobj/
Ordner , um ein lästiges Build-Problem zu beheben.Ich habe dasselbe
fatal: bad object HEAD
in meinem aktuellen Zweig (Master) erhalten und konntegit status
keinen anderen Zweig ausführen oder auschecken (ich habe immer einen bekommenerror refs/remote/[branch] does not point to a valid object
).Wenn Sie alle Ihre
obj
Ordner löschen möchten , werden Sie nicht faul und lassen Sie.git/objects
die Mischung zu. In diesem Ordner befinden sich alle tatsächlichen Inhalte Ihrer Git-Commits.Nachdem ich kurz davor war aufzugeben, entschied ich mich zu prüfen, welche Dateien sich in meinem Papierkorb befanden, und da war es. Die Datei wurde wiederhergestellt und mein lokales Repository war wie neu.
quelle
Dies passierte mir bei einem alten einfachen Projekt ohne Zweige. Ich habe viele Änderungen vorgenommen und als ich fertig war, konnte ich mich nicht festlegen. Nichts oben hat funktioniert, also endete ich mit:
quelle
Ich habe dies gelöst, indem ich den Zweig in der Datei umbenannt habe
.git/refs/remotes/origin/HEAD
.quelle