Come posso risolvere questo problema? Utilizzare git fsck
e accedere!
Per prima cosa creare un file contenente commit e blob persi (non raggiungibili). (NOTA: se hai fatto qualcosa come git gc
allora raccoglierà tutti i commit e non li troverai qui!)
$git fsck --lost-found > lost_found.commits
Che ti dà un file in questo modo:
penzoloni commettere dec2c5e72a81ef06963397a49c4b068540fc0dc3
penzoloni blob f8c2579e6cbfe022f08345fa7553feb08d60a975
penzoloni blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
penzoloni blob 11cbd8eba79e01f4fd7f496b1750953146a09502
penzoloni commettere 18733e44097d2c7a800650cea442febc5344f9b3
penzoloni blob 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
È quindi possibile aprire il file con voi editor di testo preferito per copiare i commettere hash/blog da lì. (* tosse * macro vim funziona alla grande per questo * tosse *)
ora è possibile accedere nuovamente da questo impegnarsi con qualcosa di simile git log --oneline <commit hash>
. In alternativa, gitk, tig o qualsiasi altro git viewer dovrebbero funzionare.
Nel tuo caso se si trova l'hash per commettere F il registro vi mostrerà qualcosa di simile,
A---B---E---F
facile e veloce! Ora puoi trovare il contesto dietro a tutti questi impegni penzolanti.
P.S. Sì, lo so, post in ritardo, ma vabbè, qualcuno potrebbe trovarlo qui e trovarlo utile. (Per lo più mi probabilmente in 6 mesi, quando ho google Questo nuovo)
+1: Non c'è assolutamente alcuna differenza tra un commit deliberatamente reso orfano da 'commit --amend' o' rebase' e uno accidentalmente reso orfano lavorando con un HEAD distaccato, per esempio. – Cascabel
davvero. probabilmente il modo più semplice per recuperare da quella situazione sarà guardare il reflog per HEAD stesso. – araqnid
Grazie, questo aiuta. Anche la risposta irriverente :) +1 – Amadan