Horreur et malheur, suite à une erreur de manipulation hier, je me suis retrouvé à faire une fausse manipulation sur mon dépôt git.
Un git reset --hard mal écrit m'a ramené… au dernier commit poussé sur origin.
Soit la perte d'une journée complète de travail… horreur, malheur et malédiction.

Un git log ne montre plus rien du travail accompli, on dirait presque que tout a été perdu… définitivement.

Heureusement, pas de panique ! Git conserve toujours tout en mémoire… même les commits qui ne sont plus liés à rien (enfin, il les supprime au bout de quelques mois, mais je suppose qu'on se rend compte rapidement d'une telle erreur).

Tadam !
Il suffit donc de lister tout ces commits :

git reflog

Là dedans, on sélectionne le dernier commit (celui juste avant reset --hard f0202a...) et on le récupère dans la branche actuelle :

git reset --hard HEAD@{4}

Et voilà. Ne reste plus qu'à résoudre les conflits (si nécessaire), et à pusher pour partir l'esprit tranquille. Ouf.