Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Annulation d’un Commit Spécifique | Annulation des Modifications
Notions Essentielles de Git

bookAnnulation d’un Commit Spécifique

git revert

Comme déjà mentionné, pour annuler un commit spécifique, la commande git revert est utilisée. Cette commande crée un nouveau commit qui annule les modifications introduites par le commit spécifié. La syntaxe de base est la suivante :

git revert <commit-hash>

Comme vous pouvez le constater, au lieu d'utiliser HEAD comme pour annuler le dernier commit, il faut maintenant spécifier le hash d'un commit particulier (ID du commit) que l'on souhaite annuler (remplacez <commit-hash> par un hash valide).

Plus d'informations sur les Hashs

Rappel : chaque commit possède un identifiant unique qui est essentiellement une chaîne de chiffres (0-9) et de lettres (a-f), une chaîne hexadécimale. Cette chaîne de 40 caractères est appelée hash. Observons notre dernier commit :

Voici son hash :

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Remarque

Vous aurez un hash différent pour ce commit pour la raison expliquée ci-dessous.

Le hash du commit est calculé à l'aide de l'algorithme SHA-1 à partir des informations suivantes :

  • Message du commit ;
  • Date ;
  • Auteur ;
  • Instantané de l’arborescence de travail ;
  • Hash du commit parent (ou des commits parents s’il y en a plusieurs).

Si le commit est le premier du dépôt, alors le hash du commit parent n’est apparemment pas calculé.

Puisque toutes ces informations du commit sont utilisées pour calculer son hash, l’utilisation des hashes comme identifiants de commit garantit la cohérence du dépôt. De plus, la probabilité que deux commits différents aient le même hash (la probabilité de collision) est extrêmement faible, il est donc très improbable que cela se produise par hasard.

En résumé, si quoi que ce soit est modifié dans le commit, son hash changera également. Cela signifie qu’en cas de corruption des données pour quelque raison que ce soit, Git peut utiliser le hash pour l’identifier.

Note
Remarque

Lors de la modification d’un commit, l’identifiant du commit change, c’est pourquoi il est préférable de ne pas utiliser la commande git commit --amend lors du travail avec des dépôts distants.

Exemple de flux de travail

Avant de décider quel commit annuler, examinons les quatre derniers commits :

Nous pouvons voir qu’il y a un commit où nous avons ajouté le fichier recipe.txt. Annulons ce commit en créant un nouveau commit qui annulera ces modifications et supprimera essentiellement le fichier. Dans mon cas, son hash est le suivant :

043b634d76a7a7744757350512b6367417c29e0

Cependant, le hash de ce commit sera différent pour vous. Nous pouvons maintenant annuler ce commit :

Remplacez ce hash par votre hash.

Encore une fois, l’éditeur de texte par défaut s’ouvre avec le message de commit par défaut pour l’annulation. Nous le laissons tel quel.

Ensuite, fermer correctement l’éditeur de texte et afficher les modifications apportées dans ce dernier commit :

7 suppressions ont eu lieu, ce qui signifie que les 7 lignes du fichier ont été supprimées. Vérifions maintenant que le fichier lui-même a bien été supprimé en listant tous les fichiers et répertoires non cachés dans notre répertoire de projet :

Le fichier recipe.txt a été supprimé avec succès.

question-icon

Faire correspondre les actions avec les commandes respectives.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 3.57

bookAnnulation d’un Commit Spécifique

Glissez pour afficher le menu

git revert

Comme déjà mentionné, pour annuler un commit spécifique, la commande git revert est utilisée. Cette commande crée un nouveau commit qui annule les modifications introduites par le commit spécifié. La syntaxe de base est la suivante :

git revert <commit-hash>

Comme vous pouvez le constater, au lieu d'utiliser HEAD comme pour annuler le dernier commit, il faut maintenant spécifier le hash d'un commit particulier (ID du commit) que l'on souhaite annuler (remplacez <commit-hash> par un hash valide).

Plus d'informations sur les Hashs

Rappel : chaque commit possède un identifiant unique qui est essentiellement une chaîne de chiffres (0-9) et de lettres (a-f), une chaîne hexadécimale. Cette chaîne de 40 caractères est appelée hash. Observons notre dernier commit :

Voici son hash :

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Remarque

Vous aurez un hash différent pour ce commit pour la raison expliquée ci-dessous.

Le hash du commit est calculé à l'aide de l'algorithme SHA-1 à partir des informations suivantes :

  • Message du commit ;
  • Date ;
  • Auteur ;
  • Instantané de l’arborescence de travail ;
  • Hash du commit parent (ou des commits parents s’il y en a plusieurs).

Si le commit est le premier du dépôt, alors le hash du commit parent n’est apparemment pas calculé.

Puisque toutes ces informations du commit sont utilisées pour calculer son hash, l’utilisation des hashes comme identifiants de commit garantit la cohérence du dépôt. De plus, la probabilité que deux commits différents aient le même hash (la probabilité de collision) est extrêmement faible, il est donc très improbable que cela se produise par hasard.

En résumé, si quoi que ce soit est modifié dans le commit, son hash changera également. Cela signifie qu’en cas de corruption des données pour quelque raison que ce soit, Git peut utiliser le hash pour l’identifier.

Note
Remarque

Lors de la modification d’un commit, l’identifiant du commit change, c’est pourquoi il est préférable de ne pas utiliser la commande git commit --amend lors du travail avec des dépôts distants.

Exemple de flux de travail

Avant de décider quel commit annuler, examinons les quatre derniers commits :

Nous pouvons voir qu’il y a un commit où nous avons ajouté le fichier recipe.txt. Annulons ce commit en créant un nouveau commit qui annulera ces modifications et supprimera essentiellement le fichier. Dans mon cas, son hash est le suivant :

043b634d76a7a7744757350512b6367417c29e0

Cependant, le hash de ce commit sera différent pour vous. Nous pouvons maintenant annuler ce commit :

Remplacez ce hash par votre hash.

Encore une fois, l’éditeur de texte par défaut s’ouvre avec le message de commit par défaut pour l’annulation. Nous le laissons tel quel.

Ensuite, fermer correctement l’éditeur de texte et afficher les modifications apportées dans ce dernier commit :

7 suppressions ont eu lieu, ce qui signifie que les 7 lignes du fichier ont été supprimées. Vérifions maintenant que le fichier lui-même a bien été supprimé en listant tous les fichiers et répertoires non cachés dans notre répertoire de projet :

Le fichier recipe.txt a été supprimé avec succès.

question-icon

Faire correspondre les actions avec les commandes respectives.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
some-alt