Imaginons que vous avez été imprudent en utilisant git reset --hard
et que vous avez écrasé votre historique distant avec git push --force
.
Vous n'avez donc plus vos modifications dans le code, dans la staging zone
,
dans votre historique local ou dans votre historique distant.
Néanmoins, c'est rattrapable tant que vous n'avez pas supprimé le dossier .git
de votre projet !
Pour cela vous devez utilisez les reference logs
, accessible avec git reflog
.
Ces logs contiennent tous les changements faits sur toutes les branches de votre historique.
Vous pouvez donc récupérer tous les commits que vous avez écrasés.
Une fois que vous avez identifié le point auquel vous voulez revenir,
il suffit d'utiliser git merge
pour replacer les modifs dans votre repo
(et un traditionnel git push
pour le repo distant).