Récupérer des données spécifiques en utilisant des commandes Git

Effectué

La possibilité de récupérer des données à l’aide de commandes Git est essentielle pour les développeurs afin de rétablir des modifications accidentelles, de restaurer des fichiers supprimés ou de récupérer des validations perdues. Elle contribue à réduire les temps d’arrêt inattendus et à assurer la continuité du projet. Toutefois, bien que ses avantages soient clairs, il est important de souligner ses risques potentiels. Lors de l’application de la commande Git décrite dans cette unité, il est essentiel d’exercer une prudence appropriée, en particulier lors de la manipulation de l’historique des validations ou de l’annulation des modifications, car les erreurs peuvent entraîner une perte de données.

Commandes de récupération de données Git

Les commandes Git qui traitent de la récupération des données peuvent être regroupées en plusieurs catégories, notamment la récupération de validations, de fichiers, de lignes de code spécifiques et de validations ou de branches supprimées.

Récupération des validations

  • git log : répertorie l’historique de validation d’un dépôt. Vous pouvez parcourir le journal pour rechercher la validation que vous souhaitez récupérer.
  • git checkout <commit> : bascule vers une validation spécifique, « récupérant » efficacement l’état du dépôt à cette validation.
  • git cherry-pick <commit> : applique les modifications introduites par une validation spécifique à votre branche actuelle.

Récupération de fichiers

  • git checkout <commit><file>: restaure un fichier spécifique à partir d’une validation précédente.
  • git restore <file> : ignore les modifications locales et restaure le fichier à son dernier état validé, en supposant que vous n’avez pas encore validé les modifications.

Récupération de lignes de code spécifiques

  • git blame <file> : affiche la révision et l’auteur de chaque ligne d’un fichier, ce qui vous aide à identifier la validation qui a introduit une modification particulière.
  • git show <commit>:<file>: affiche le contenu d’un fichier à une validation spécifique. Vous pouvez spécifier la validation et le chemin du fichier pour voir le contenu tel qu’il existait à ce moment-là.

Récupération de validations ou de branches supprimées

  • git reflog : affiche un enregistrement de toutes les validations. Vous pouvez l’utiliser pour rechercher le hachage SHA-1 d’une validation ou d’une branche précédemment supprimée, puis l’extraire ou la restaurer.
  • git fsck --lost-found : vérifie l’intégrité du dépôt et répertorie les validations qui ne sont pas accessibles à partir d’une branche ou d’une balise. Vous pouvez l’utiliser pour récupérer les validations perdues.

N’oubliez pas d’utiliser ces commandes avec précaution, en particulier lors de la manipulation de l’historique des commits ou de la restauration des modifications. Veillez toujours à créer une sauvegarde de votre dépôt avant de commencer ou d’utiliser git stash pour enregistrer vos modifications actuelles avant de tenter d’effectuer des opérations de récupération.

Exemple de scénario

Découvrons un exemple de scénario qui illustre le processus d’utilisation de commandes Git pour récupérer un fichier supprimé. Nous partons du principe qu’un fichier nommé example.txt résidant dans votre dépôt Git a été supprimé accidentellement et que vous devez le récupérer.

Affichage de l’historique des validations :

  • Commencez par afficher l’historique des validations :
    git log
  • Dans la liste de l’historique des validations, identifiez le hachage SHA-1 de la validation où le fichier example.txt était présent pour la dernière fois.

Restauration du fichier supprimé :

  • Une fois que vous avez identifié le hachage SHA-1 de la validation, utilisez git checkout pour restaurer le fichier :
    git checkout <commit_SHA>^ -- example.txt
  • Remplacez <commit_SHA> par le hachage SHA-1 de la validation. Le symbole ^ indique le parent de cette validation, ce qui restaure efficacement le fichier à son état avant la suppression.

Vérification des modifications :

  • Après avoir restauré le fichier, vérifiez qu’il a été correctement restauré en vérifiant l’état du dépôt :
    git status
  • Vérifiez que le fichier example.txt est listé en tant que fichier modifié ou non suivi.

Indexation et validation des modifications :

  • Si le fichier est listé comme modifié, indexez-le pour la validation :
    git add example.txt
  • Validez les modifications avec un message de validation approprié :
    git commit -m "Restored example.txt"