1 min read

Riparare git ovvero "fatal: object XXX is corrupted"

Git è uno strumento utilissimo per tenere traccia delle modifiche fatte al codice o per inviare in modo incrementale le modifiche a una webapp. In questo caso può essere considerato anche una specie di backup remoto visto che le versioni del codice vengono sincronizzate periodicamente.

Nonostante tutto, la Legge di Murphy è sempre in agguato e infatti può capitare che i file di configurazione di git si corrompano ovvero:qualsiasi comando si ottenga sempre un errore del tipo:

fatal: object 1fcc8de9361c56__hash___d8cc4b07a9c95b7bf3 is corrupted

Su Stackoverflow ci sono degli ottimi consigli su come tentare di risolvere questo problema senza perdere la storia delle modifiche peccato che non abbia funzionato nel mio caso. Ma avendo a disposizione un repository remoto è stato comunque possibile riportarlo a uno stato consistente.

mv .git .git.broken

Copiare la configurazione .git/ del progetto remoto in locale. Potete farlo via ssh. Vi conviene comprimere .git/ prima del trasferimento

Estraete la configurazione remota in .git/

Verificate con: meld .git .git.broken eventuali differenze che volete mantenere, nel mio caso

cp .git.broken/config .git/config

A questo punto il repostory git dovrebbe essere nuovamente consistente, ma potrebbe essere segnalato come "Your branch is ahead of 'origin/master' by 1 commit"

Quindi con 

git reset origin/master

lo riallineate all'ultimo stato remoto e da questo stato potete ri-committare le modifiche al repository locale che avevate effettuato.

Good Luck..