Ich habe ein beschädigtes loses Objekt.Zurück in die Geschichte zu einer unbeschädigten Version?
Ich habe versucht, checkout, revert, rebase und vielleicht ein paar andere Dinge zu einem ursprünglichen Commit zu gehen. I git fsck
In jedem Fall lief und hatte immer noch das gleiche Problem:
> git fsck
error: corrupt loose object '25a196217ebb6e341909205575f491022eafc4d9'
fatal: loose object 25a196217ebb6e341909205575f491022eafc4d9 (stored in .git/objects/25/a196217ebb6e341909205575f491022eafc4d9) is corrupt
gibt es eine Möglichkeit der beschädigten Objekte loszuwerden ohne .git einfach zu löschen? Ich habe kein weiteres Backup, so dass ich das beschädigte Objekt nicht ersetzen kann.
Es ist eine schmale Frage, die git "error: corrupt loose object" after moving a directory
Update aus diesem entstand (1):
> git gc
Counting objects: 747, done.
Delta compression using up to 8 threads.
error: corrupt loose object '25a196217ebb6e341909205575f491022eafc4d9'
fatal: loose object 25a196217ebb6e341909205575f491022eafc4d9 (stored in .git/objects/25/a196217ebb6e341909205575f491022eafc4d9) is corrupt
error: failed to run repack
Update (2): dies nicht funktioniert entweder Remove file from git repository (history)
Aktualisierung (3): Klonen d funktioniert nicht:
> git clone ../dynamicsCode_good/ .
Cloning into ....
done.
error: corrupt loose object '25a196217ebb6e341909205575f491022eafc4d9'
fatal: loose object 25a196217ebb6e341909205575f491022eafc4d9 (stored in .git/objects/25/a196217ebb6e341909205575f491022eafc4d9) is corrupt
die. Verzeichnis ist leer
update (4): Entfernen eines beschädigten Objekts.
> git --version
git version 1.7.5.4
> rm -f .git/objects/25/a196217ebb6e341909205575f491022eafc4d9
13:42:57 ~/Dropbox/work/dev/dynamicsCode_torek
> git fsck --full
missing blob 25a196217ebb6e341909205575f491022eafc4d9
dangling tree 64a970c878fef7deeeb4ce2ffc5e6234a72894ad
dangling tree 528e6c121fb8e56097462b2ebb9ec4de66388ce2
erster (erster) Kommentar. Dieser Kommentar enthält nicht einmal die beschädigte Datei.
> git log |tail -5
commit 150ceebafb9c20769386cc7ffba07f6e6565fae6
Author: Kirill ...gmail.com>
Date: Tue Sep 27 22:51:15 2011 -0400
state takes input as input
checkout:
> git checkout -b 150ceebafb9c20769386cc7ffba07f6e6565fae6
Switched to a new branch '150ceebafb9c20769386cc7ffba07f6e6565fae6'
> git gc
Counting objects: 783, done.
error: unable to find 25a196217ebb6e341909205575f491022eafc4d9
Compressing objects: 100% (776/776), done.
fatal: unable to read 25a196217ebb6e341909205575f491022eafc4d9
error: failed to run repack
> git fsck --full
broken link from tree 4668817140320ad2e04aa946d95dec2c3885d97b
to blob 25a196217ebb6e341909205575f491022eafc4d9
missing blob 25a196217ebb6e341909205575f491022eafc4d9
dangling tree 64a970c878fef7deeeb4ce2ffc5e6234a72894ad
dangling tree 528e6c121fb8e56097462b2ebb9ec4de66388ce2
Ich habe versucht, auch im .git/objects/pack/
Verzeichnis das einzige Objekt, das Auspacken. hat nicht geholfen.
ich geklont auch diesen Zustand in ein neues Verzeichnis:
> git gc
Counting objects: 662, done.
error: unable to find 25a196217ebb6e341909205575f491022eafc4d9
Compressing objects: 100% (656/656), done.
fatal: unable to read 25a196217ebb6e341909205575f491022eafc4d9
error: failed to run repack
14:40:34 ~/Dropbox/work/dev/dynamicsCode_torek_commit_clone
> git fsck
broken link from tree b5ab6b287804d5069a3c8648ace38d9d9feac1a5
to blob 25a196217ebb6e341909205575f491022eafc4d9
dangling commit dad8edc620248d3911b7b1c0a99608a64e0288a3
missing blob 25a196217ebb6e341909205575f491022eafc4d9
dangling tree 64a970c878fef7deeeb4ce2ffc5e6234a72894ad
dangling commit ae2b2a9edb744d9e91aa78891c849d5a0040ea94
dangling commit 32ed79bd4ac70b118d046cb6093a4710562e95ba
dangling commit 7e45ef0c6ffc46401b1f82bcbf0f7e843abf9e31
dangling tree 528e6c121fb8e56097462b2ebb9ec4de66388ce2
14:40:40 ~/Dropbox/work/dev/dynamicsCode_torek_commit_clone
> git branch
* 150ceebafb9c20769386cc7ffba07f6e6565fae6
auch nicht geholfen hat.
Die beschädigte Datei ist tags
von Ctags. Ich brauche es nicht. Es ist merkwürdig, dass ich git ohne diese Datei nicht wiederherstellen kann. Am wichtigsten ist, dass ich aus all meinen Untersuchungen weder sehe, wie es gemacht werden kann, noch warum es nicht möglich ist.
Update (5): Kasse ohne
> git checkout 150ceebafb9c20769386cc7ffba07f6e6565fae6
Note: checking out '150ceebafb9c20769386cc7ffba07f6e6565fae6'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 150ceeb... state takes input as input
16:41:40 ~/Dropbox/work/dev/dynamicsCode_torek_commit
> git fsck --full
broken link from tree 4668817140320ad2e04aa946d95dec2c3885d97b
to blob 25a196217ebb6e341909205575f491022eafc4d9
missing blob 25a196217ebb6e341909205575f491022eafc4d9
dangling tree 64a970c878fef7deeeb4ce2ffc5e6234a72894ad
dangling tree 528e6c121fb8e56097462b2ebb9ec4de66388ce2
Ist 'git gc' sauber? – Andy
Nein, ich aktualisiert in Update (1) –
Sie könnten versuchen, dieses Repository zu klonen. Klonen sollte nur die "notwendigen" Objekte in ein neues Repo aufnehmen, so lange dieses lose Objekt wirklich "unnötig" für Ihren Klon ist, haben Sie möglicherweise einen korruptionsfreien Repo in Ihrem Klon. –