Lab Niveau 13 — Réparer et Stasher
Progression dans cet atelier 0%
Objectifs
Section titled “Objectifs”- Annuler des modifications locales non indexées.
- Désindexer un fichier indexé par erreur.
- Réorganiser l’historique récent avec
git reset. - Mettre de côté des modifications en cours avec
git stash. - Restaurer un commit supprimé par erreur à l’aide de
git reflog.
Exercice Pratique
Section titled “Exercice Pratique”Dans votre dépôt de TP local, réalisez la suite de manipulations suivantes :
Étape 1 : Nettoyage local et Désindexation
Section titled “Étape 1 : Nettoyage local et Désindexation”- Modifiez le fichier
index.htmlen y ajoutant du texte temporaire, et créez un nouveau fichiertemp.log. - Ajoutez
temp.logà l’index avecgit add temp.log. - Retirez
temp.logde l’index en utilisant la commandegit restore. - Annulez les modifications de
index.htmlpour retrouver l’état propre du dernier commit.
Étape 2 : Reculer dans le temps
Section titled “Étape 2 : Reculer dans le temps”- Faites deux commits successifs bidon (ex: en modifiant un fichier texte ou en créant un fichier
test-reset.txt). - Annulez le tout dernier commit tout en conservant les fichiers modifiés et indexés (Staging Area) en utilisant le bon mode de
git reset. - Annulez ensuite complètement le commit précédent et nettoyez votre Working Directory en utilisant le mode destructeur de
git reset.
Étape 3 : Travailler dans l’urgence (Stash)
Section titled “Étape 3 : Travailler dans l’urgence (Stash)”- Modifiez
index.htmlen ajoutant un commentaire<!-- WIP -->. - Mettez cette modification en attente (stash) pour retrouver un espace de travail propre.
- Vérifiez que
git statusindique que votre répertoire est propre. - Restaurez votre travail en cours à l’aide de la commande adéquate.
Étape 4 : Le sauvetage ultime (Reflog)
Section titled “Étape 4 : Le sauvetage ultime (Reflog)”- Créez un fichier
important.txtcontenant le texte “Donnees precieuses”. Commitez-le avec le message"feat: add important data". - Lancez un
git reset --hard HEAD~1. Le fichierimportant.txta disparu ! - Utilisez
git reflogpour identifier l’identifiant (SHA-1) du commit contenant vos données précieuses. - Restaurez ce commit en effectuant un reset hard vers cet identifiant. Vérifiez que
important.txtest bien revenu.
Checklist de validation
Section titled “Checklist de validation”- Les modifications locales erronées ont été écrasées avec
git restore. - Le fichier indexé par erreur a été retiré de l’index.
- Les différents modes de
git reset(soft / hard) ont été expérimentés. - Les modifications WIP ont été cachées temporairement, puis restaurées avec
git stash pop. - Le commit perdu a été récupéré avec succès grâce au
reflog.
Compétences acquises
Section titled “Compétences acquises”- Annulation de modifications locales
- Manipulation des modes de
git reset - Gestion des modifications en attente avec
git stash - Diagnostic et récupération avec
git reflog
Fiches de révision
Section titled “Fiches de révision” Question
Quelle commande Git liste l'historique complet de toutes les actions de la tête d'écriture (HEAD) ?
Cliquer pour révéler la réponse Réponse
git reflog
Cliquer pour voir la question Question
Quel reset déplace HEAD sans toucher à l'index ni au répertoire de travail ?
Cliquer pour révéler la réponse Réponse
git reset --soft
Cliquer pour voir la question Question
Comment appliquer un stash spécifique sans le supprimer de la liste ?
Cliquer pour révéler la réponse Réponse
git stash apply stash@{index}
Cliquer pour voir la questionÉvaluation des connaissances
Section titled “Évaluation des connaissances”Quelle commande détruit DEFINITIVEMENT le dernier commit ainsi que toutes les modifications en cours ?
Quelle commande permet de lister toutes les modifications mises de côté temporairement ?
Combien de temps un commit orphelin reste-t-il accessible via le reflog avant d'être supprimé définitivement ?