Annuler des erreurs en toute sécurité : restore, reset, revert, reflog
La nouvelle la plus rassurante de tout le cours : Git ne perd presque jamais vraiment ton travail. Presque toute erreur est réversible, si on sait quel outil utiliser. Dans cette leçon, on construit une petite trousse de récupération claire avec quatre outils, chacun accompagné d'un « quand ». git r
restore, c'est « annule ce que je modifie en ce moment ». reset, c'est « ramène-moi en arrière dans le temps » (et --hard supprime aussi, donc prudence). revert, c'est « ajoute une page qui annule une ancienne page » — sûr pour l'équipe. reflog est une caméra de sécurité qui se souvient où HEAD s'est déplacé, même quand on a l'impression d'avoir perdu du travail.
- git restore
- Annule les changements de l'arbre de travail (git restore <file>) ou retire un fichier du staging (git restore --staged <file>). Ne touche pas à l'historique.
- git reset
- Déplace HEAD (et la branche) vers un commit antérieur. --soft garde les changements en staging, --hard supprime aussi les changements de l'arbre de travail. Sûr uniquement sur de l'historique local.
- git revert
- Crée un nouveau commit qui annule le changement d'un commit précédent, sans réécrire l'historique. La façon sûre d'annuler quelque chose déjà poussé et partagé.
- git reflog
- Un journal local de tous les endroits où HEAD s'est trouvé. Permet de retrouver le hash d'un commit qui semble « perdu » après un reset et de le récupérer. Ton filet de sécurité.
- Historique partagé (shared history)
- Des commits déjà poussés et que d'autres ont peut-être récupérés (pull). Les réécrire casse la copie de l'équipe — c'est pourquoi on utilise revert sur eux, pas reset --hard.