2011-10-06 16 views
10

Dopo un reset hardware del mio portatile che congelato dopo una git commit, ho il seguente errore quando entro in un qualsiasi comando sul mio repository git:Come ripristinare un repository git danneggiato?

$ git status 
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument 

'comunque lì per recuperare il mio repository git?

non ho trovato una soluzione dalle due seguenti domande:

EDIT: Non ho trovato che cosa ha causato il danneggiamento della mia repository git né alcuna soluzione per ripristinarlo ... Ho finalmente avviato un nuovo clone dal mio repository SVN!

+2

Il primo passo è controllare i filesystem. Quell'errore è strano Hai 'fsck' o qualsiasi cosa abbia il tuo sistema operativo? E fai un ** BACKUP ** prima di fare qualsiasi altra cosa. – Mat

+0

Quasi tutte le risposte presuppongono che si possa semplicemente ri-clonare da un'origine remota incorruttibile. Ecco il problema ... E se tu ** sei ** l'origine e sei corrotto? Destra. Quindi, qui: 'git-repair' è un programma che eseguirà' git fsck' e si impegna a risolvere i problemi che incontra. https://git-repair.branchable.com/ Sembra abbastanza capace, e anche se potresti finire per dover copiare (se puoi!) oggetti da un backup (hai un backup, giusto?), dovrebbe salvarti un sacco di tempo recuperando tutto ciò che può e lasciandoti il ​​vero lavoro, non un sacco di compiti automatizzabili. Nessuna affiliazione, ecc. –

risposta

2

Per me, nessuna delle risposte precedenti ha funzionato. Ho appena ri-clonato il mio repository git e tutto andava bene. Prima della clonazione, ho aperto tutti i file che sono stati modificati e li ho semplicemente sovrascritti dopo il pull.

Ecco perché dovresti commettere spesso :).

1

Hai spostato il tuo repository da qualche parte come github o bitbucket di recente? È possibile ottenere un altro clone e copiare la directory degli oggetti.

Altrimenti:

vedere quanti di questi run:

git fsck 
git branch -a 
git branch -a | xargs -n 1 git log -1 
git reflog 

Con il reflog, vedere quale uno di quelli che si può fare un log di successo da. si spera che sia solo il tuo ultimo commit corrotto o uno dei suoi alberi.

Spero che questo aiuti

+1

Certo, potrei ricominciare un nuovo clone, spero di non essere troppo lontano dal mio tronco svn (il mio repository locale è un clone git-svn). Ma mi chiedevo se questo tipo di problema potesse essere recuperato e quale fosse la sua origine per evitare di riprodurlo in futuro. – greydet

Problemi correlati