Il mio repository git è in qualche modo traballante - ho caricato msysgit questa mattina e invece di mostrare il nome del ramo dopo la directory corrente, dice "((ref: re ...))", 'git status' riporta tutto come un nuovo file, 'git log' e 'git reflog' mi dicono "fatal: bad default revision 'HEAD'", e così via.
Fare "git reflog --all" o "gitk --all" mostra che il resto del repository è intatto, ma sembra che il ramo su cui stavo lavorando sia appena scomparso, il che spiega perché HEAD non sembra esistere / indicare qualsiasi cosa.
So che git conserva tutti i tipi di glob di informazioni, e presumo che i miei commit siano rimasti orfani in qualche modo, quindi c'è qualche comando che mi mostrerà quei commit in modo da poter reimpostare HEAD su di loro?
EDIT: Oh caro. Ho scoperto "git fsck", e "git fsck --full" riporta "fatal: object 03ca4 ... is danneggiato". Che diavolo posso fare a riguardo?
EDIT: Oh caro oh caro. Ho verificato un altro ramo, quindi ho provato a ricreare il ramo originale con lo stesso nome utilizzando "git checkout -b lostbranchname" e git dice "errore: impossibile risolvere riferimenti refs / heads / lostbranchname: nessun errore, fatale: non riuscito per bloccare ref per l'aggiornamento: Nessun errore ". "Nessun errore" deve essere un errore particolarmente fastidioso. Quindi sembra che sia ancora in giro, ma non può essere usato e non può essere ucciso.
EDIT: Super duper oh caro. Ho fatto un sacco di disimballaggio e reimballaggio e sostituzione di cose come suggerito qui: Come recuperare oggetti Git danneggiati da un guasto del disco rigido? , ma ora sto ricevendo un altro hash segnalato come corrotto, per qualcosa di innocuo come "git status". Penso che l'intera faccenda sia stata lavata. Git è adorabile e tutto, ma non dovrei avere a che fare con questo genere di cose.
git checkout -b lostbranchname
: se ti interessa solo il nome del ramo (non il contenuto di esso), puoi eliminare manualmente (o rinominare).git/refs/heads/lostbranchname
- si spera che faccia il trucco.