Comment résoudre ce problème ? Utilisez git fsck
et l'exploitation forestière !
Créez d'abord un fichier contenant les commits et blobs perdus (inaccessibles) (NOTE : si vous avez fait quelque chose comme git gc
alors il va collecter tous les commits et vous ne les trouverez pas ici !)
$git fsck --lost-found > lost_found.commits
Cela vous donne un fichier comme celui-ci :
dangling commit dec2c5e72a81ef06963397a49c4b068540fc0dc3
goutte pendante f8c2579e6cbfe022f08345fa7553feb08d60a975
goutte de sang 0eb3e86dc112332ceadf9bc826c49bd371acc194
goutte de sang 11cbd8eba79e01f4fd7f496b1750953146a09502
dangling commit 18733e44097d2c7a800650cea442febc5344f9b3
goutte de sang 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Vous pouvez ensuite ouvrir ce fichier avec votre éditeur de texte préféré pour copier les hashs de commit/blog à partir de là. (* toux * Les macros vim fonctionnent très bien pour cela. toux *)
Maintenant vous pouvez vous reconnecter à partir de ce commit avec quelque chose comme git log --oneline <commit hash>
. Alternativement, gitk, tig, ou tout autre visualisateur git devrait fonctionner.
Dans votre cas, si vous trouvez le hash pour le commit F, le journal vous montrera quelque chose comme ceci,
A---B---E---F
Rapide et facile ! Maintenant vous pouvez trouver le contexte derrière tous ces commits qui pendent.
P.S. Oui, je sais, c'est un post tardif, mais bon, quelqu'un pourrait le trouver ici et le trouver utile. (Très probablement moi dans 6 mois quand je Googlerai à nouveau ce sujet)