Comment identifier et récupérer les validations (commits) supprimées dans Git

GitBeginner
Pratiquer maintenant

Introduction

Git est un puissant système de contrôle de version qui aide les développeurs à suivre les modifications, à collaborer et à maintenir un historique complet de leurs projets. Cependant, les développeurs peuvent parfois supprimer accidentellement des validations (commits) importantes, ce qui entraîne la perte de code précieux et de l'historique du projet. Ce tutoriel vous guidera tout au long du processus d'identification et de récupération des validations supprimées dans Git, afin que vous puissiez récupérer le code perdu et maintenir un historique de validation complet pour vos projets.

Comprendre les validations (commits) Git

Git est un système de contrôle de version distribué qui permet aux développeurs de suivre les modifications apportées à leur base de code au fil du temps. Au cœur de Git se trouve le concept de validation (commit), qui représente une capture instantanée de l'état du projet à un moment précis.

Qu'est-ce qu'une validation (commit) Git?

Une validation (commit) Git est l'unité de base des modifications dans un dépôt Git. Lorsque vous apportez des modifications aux fichiers de votre projet et que vous décidez d'enregistrer ces modifications, vous créez une nouvelle validation. Chaque validation contient les informations suivantes :

  1. Identifiant unique : Chaque validation est assignée une chaîne hexadécimale unique de 40 caractères, connue sous le nom de hachage de validation (commit hash) ou SHA de validation (commit SHA). Cet identifiant est utilisé pour référencer de manière unique la validation.
  2. Auteur : La personne qui a apporté les modifications et créé la validation.
  3. Horodatage : La date et l'heure à laquelle la validation a été créée.
  4. Message de validation : Une brève description des modifications apportées dans la validation.
  5. Capture instantanée des fichiers : L'état complet de tous les fichiers dans le répertoire du projet au moment de la validation.
  6. Validation(s) parente(s) : La ou les validations précédentes sur lesquelles la validation actuelle est basée.

Structure d'une validation (commit) Git

Lorsque vous créez une nouvelle validation dans un dépôt Git, les étapes suivantes se produisent :

  1. Préparer les modifications : Vous devez d'abord préparer les modifications que vous souhaitez inclure dans la validation en utilisant la commande git add.
  2. Créer la validation : Une fois les modifications préparées, vous pouvez créer une nouvelle validation en utilisant la commande git commit. Cela capturera l'état actuel du projet et créera une nouvelle validation.
  3. Mettre à jour la branche : La nouvelle validation est ensuite ajoutée à la branche actuelle, faisant avancer le pointeur de la branche vers la nouvelle validation.
graph LR
    A[Working Directory] --> B[Staging Area]
    B --> C[Git Repository]

Afficher l'historique des validations

Vous pouvez afficher l'historique des validations d'un dépôt Git en utilisant la commande git log. Cela affichera une liste de toutes les validations dans le dépôt, y compris leur hachage de validation, leur auteur, leur horodatage et leur message de validation.

$ git log
commit 1234567890abcdef1234567890abcdef12345678
Author: John Doe <john.doe@example.com>
Date:   Mon Apr 24 12:34:56 2023 +0000

    Implement new feature X

commit fedcba0987654321fedcba0987654321fedcba
Author: Jane Smith <jane.smith@example.com>
Date:   Fri Apr 21 09:87:65 2023 +0000

    Fix bug in module Y

Identifier les validations (commits) supprimées

Au cours du développement logiciel, il n'est pas rare que les développeurs suppriment accidentellement des validations (commits) d'un dépôt Git. Identifier ces validations supprimées est une compétence essentielle pour tout utilisateur de Git.

Comprendre le reflog Git

Le reflog Git est un outil puissant qui peut vous aider à identifier et à récupérer les validations supprimées. Le reflog est un journal de toutes les modifications apportées aux références de branche du dépôt, y compris la suppression de validations.

Pour afficher le reflog, vous pouvez utiliser la commande git reflog :

$ git reflog
1234567 HEAD@{0}: commit: Implement new feature X
fedcba0 HEAD@{1}: commit: Fix bug in module Y
abcd123 HEAD@{2}: commit: Update documentation

Chaque entrée dans le reflog représente une modification de l'état du dépôt, y compris le hachage de validation (commit hash), le type de modification (par exemple, commit) et une brève description.

Identifier les validations (commits) supprimées

Pour identifier une validation supprimée en utilisant le reflog, vous pouvez rechercher les entrées indiquant qu'une validation a été supprimée. Par exemple, si vous voyez une entrée comme celle-ci :

abcd123 HEAD@{2}: commit (amend): Update documentation

Cela signifie que la validation avec le hachage abcd123 a été précédemment corrigée (c'est-à-dire modifiée et remplacée par une nouvelle validation).

Alternativement, vous pouvez voir une entrée comme celle-ci :

abcd123 HEAD@{2}: commit (delete): Update documentation

Cela indique que la validation avec le hachage abcd123 a été supprimée du dépôt.

En examinant le reflog, vous pouvez identifier le hachage de la validation supprimée et l'utiliser pour récupérer la validation, comme décrit dans la section suivante.

Récupérer les validations (commits) supprimées

Après avoir identifié une validation supprimée en utilisant le reflog Git, vous pouvez récupérer cette validation et la restaurer dans votre dépôt. Ce processus consiste à créer une nouvelle branche ou à extraire sélectivement (cherry-picking) la validation dans la branche actuelle.

Restaurer les validations (commits) supprimées

Pour restaurer une validation supprimée, vous pouvez utiliser la commande git checkout pour créer une nouvelle branche basée sur la validation supprimée :

$ git checkout -b restored-commit abcd123
Switched to a new branch 'restored-commit'

Cela créera une nouvelle branche appelée restored-commit qui pointe vers la validation supprimée avec le hachage abcd123. Vous pouvez ensuite continuer à travailler sur cette branche selon vos besoins.

Alternativement, vous pouvez utiliser la commande git cherry-pick pour appliquer les modifications de la validation supprimée directement à la branche actuelle :

$ git cherry-pick abcd123
[master 1234567] Update documentation
 Date: Wed Apr 26 10:23:45 2023 +0000
 1 file changed, 2 insertions(+)

Cela appliquera les modifications de la validation avec le hachage abcd123 à la branche actuelle (master dans cet exemple).

Vérifier la validation (commit) restaurée

Après avoir restauré la validation supprimée, vous pouvez utiliser la commande git log pour vérifier que la validation a été récupérée avec succès :

$ git log
commit 1234567890abcdef1234567890abcdef12345678
Author: John Doe <john.doe@example.com>
Date:   Wed Apr 26 10:23:45 2023 +0000

    Update documentation

commit fedcba0987654321fedcba0987654321fedcba
Author: Jane Smith <jane.smith@example.com>
Date:   Fri Apr 21 09:87:65 2023 +0000

    Fix bug in module Y

La validation restaurée devrait maintenant être visible dans l'historique des validations.

Considérations

Gardez à l'esprit que le reflog Git ne stocke par défaut que les informations sur les 30 derniers jours. Si la validation supprimée a plus de 30 jours, elle peut ne pas être disponible dans le reflog, et vous pourriez ne pas être en mesure de la récupérer avec cette méthode.

De plus, si la validation supprimée a déjà été poussée (push) vers un dépôt distant et que le dépôt distant a été mis à jour, vous pourriez ne pas être en mesure de récupérer la validation supprimée à partir de votre dépôt local. Dans de tels cas, vous devrez peut-être coordonner avec votre équipe pour récupérer la validation supprimée depuis le dépôt distant.

Résumé

Dans ce tutoriel, vous avez appris à identifier et à récupérer efficacement les validations (commits) supprimées dans Git. En comprenant les diverses techniques et commandes disponibles, vous pouvez maintenant récupérer le code perdu, maintenir un historique de validation complet et garantir l'intégrité du processus de développement de votre projet. Les puissantes capacités de contrôle de version de Git en font un outil essentiel pour le développement logiciel moderne, et maîtriser la capacité de gérer les validations supprimées est une compétence précieuse pour tout développeur travaillant avec Git.