Récupérer les fichiers perdus

GitBeginner
Pratiquer maintenant

Introduction

En tant que développeur, vous serez inévitablement confronté à des situations où des fichiers importants sont supprimés puis validés par erreur dans l'historique. Ce défi simule un tel scénario pour tester votre capacité à inspecter l'historique de Git et à utiliser les outils de restauration afin de récupérer les données perdues et remettre votre projet sur pied.

Récupérer les fichiers perdus

Avant de commencer ce défi, un dépôt Git a été initialisé pour vous dans le répertoire ~/project/important-project. Ce dépôt contient plusieurs commits, incluant la création puis la suppression accidentelle de deux fichiers cruciaux. Voici le contexte :

  • Le dépôt a été créé avec un commit initial ajoutant un fichier README.md.
  • Deux fichiers essentiels, important_algorithm.py et crucial_data.txt, ont été ajoutés lors d'un commit ultérieur.
  • Plusieurs autres commits ont suivi avec diverses modifications.
  • À un moment donné, important_algorithm.py et crucial_data.txt ont été supprimés par erreur, et cette suppression a été validée (commit).
  • Au moins un autre commit a été effectué après cette suppression accidentelle.

Votre mission consiste à récupérer les fichiers supprimés en naviguant dans l'historique du dépôt, puis à valider ces fichiers récupérés dans un nouveau commit.

Tâches

  1. Explorez l'historique du dépôt pour identifier le moment où important_algorithm.py et crucial_data.txt ont été supprimés.
  2. Restaurez le dépôt à l'état précédant immédiatement la suppression.
  3. Conservez les commits originaux et créez un nouveau commit avec le message "Recover deleted files".

Exigences

  • Travaillez dans le répertoire ~/project/important-project.
  • Assurez-vous que important_algorithm.py et crucial_data.txt sont bien présents après la récupération.
  • Le message du dernier commit doit être "Recover deleted files", et l'historique des commits doit être préservé.

Exemple

Une fois le défi réussi, l'exécution de ls dans le répertoire du projet devrait afficher :

$ ls ~/project/important-project
important_algorithm.py crucial_data.txt README.md

La commande git status devrait indiquer que le répertoire de travail est propre :

$ git status
On branch master
nothing to commit, working tree clean

Et git log devrait montrer votre nouveau commit au sommet de la pile :

$ git log --oneline
8876d8b (HEAD -> master) Recover deleted files
9b3525c Update project status
5e6234c Oops, accidentally deleted important files
9de9506 Update algorithm TODO
01c36ae Add crucial data and algorithm
638a98d Initial commit
✨ Vérifier la solution et pratiquer

Résumé

Dans ce défi, vous avez été confronté à un scénario Git classique : la suppression accidentelle de fichiers. Vous avez appris à :

  1. Inspecter l'historique complet de votre dépôt, y compris les actions ayant modifié le pointeur HEAD.
  2. Restaurer votre dépôt à un état antérieur spécifique, ce qui revient à "remonter le temps" dans votre projet.
  3. Créer un nouveau commit pour enregistrer l'état restauré de votre travail.

Ces compétences sont indispensables pour retrouver des commits perdus, annuler des erreurs et maintenir un historique de projet cohérent. N'oubliez pas que, bien que ces outils puissent vous sauver de situations critiques, il est toujours préférable de travailler avec précaution et d'effectuer des commits fréquents et bien documentés pour éviter ce genre de désagrément.

En relevant ce défi, vous avez acquis une expérience pratique des outils de récupération les plus puissants de Git, des compétences qui vous seront utiles tout au long de votre carrière de développeur.