Comment résoudre ce problème? Utilisation git fsck
et journalisation!
Créez d'abord un fichier contenant des commits et des blobs perdus (inaccessibles). (REMARQUE: si vous avez fait quelque chose comme git gc
cela, tous les commits seront récupérés et vous ne les trouverez pas ici!)
$git fsck --lost-found > lost_found.commits
Cela vous donne un fichier comme celui-ci:
ballants commettre dec2c5e72a81ef06963397a49c4b068540fc0dc3
ballants blob f8c2579e6cbfe022f08345fa7553feb08d60a975
ballants blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
blob ballants 11cbd8eba79e01f4fd7f496b1750953146a09502
ballants commettre 18733e44097d2c7a800650cea442febc5344f9b3
blob ballants 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Vous pouvez ensuite ouvrir ce fichier avec votre éditeur de texte préféré pour copier les hachages de commit / blog à partir de là. (Les macros * toux * vim fonctionnent très bien pour cette * toux *)
Vous pouvez maintenant vous reconnecter à partir de ce commit avec quelque chose comme git log --oneline <commit hash>
. Alternativement, gitk, tig ou tout autre visualiseur git devrait fonctionner.
Dans votre cas, si vous trouvez le hachage pour commit F, le journal vous montrera quelque chose comme ça,
A---B---E---F
Rapide et facile! Vous pouvez maintenant trouver le contexte derrière tous ces commits pendants.
PS Oui, je sais, post tardif, mais bon, quelqu'un pourrait le trouver ici et le trouver utile. (Probablement moi dans 6 mois quand je google à nouveau)
commit --amend
ourebase
et un orphelin accidentellement en travaillant avec un HEAD détaché, par exemple.