Comment annuler un commit Git sans perdre les modifications

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Git est un puissant système de contrôle de version qui permet aux développeurs de gérer efficacement leur base de code. Cependant, il peut arriver que vous deviez annuler un commit sans perdre les modifications que vous avez apportées. Ce tutoriel vous guidera tout au long du processus d'annulation d'un commit Git tout en préservant votre travail précieux.

Comprendre les 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 trouvent les commits, qui représentent des instantanés de votre projet à un moment précis.

Qu'est-ce qu'un commit Git?

Un commit Git est une collection de modifications apportées à un ou plusieurs fichiers de votre dépôt. Lorsque vous apportez des modifications à votre code et que vous souhaitez enregistrer ces modifications, vous créez un nouveau commit. Chaque commit a un identifiant unique, appelé hash de commit, qui vous permet de référencer et de suivre les modifications apportées dans ce commit spécifique.

Structure d'un commit Git

Un commit Git se compose généralement des éléments suivants :

  1. Message de commit : Une brève description des modifications apportées dans le commit, généralement écrite à l'impératif (par exemple : "Ajouter une nouvelle fonctionnalité", "Corriger un bogue dans le processus de connexion").
  2. Auteur : La personne qui a apporté les modifications et créé le commit.
  3. Horodatage : La date et l'heure à laquelle le commit a été créé.
  4. Hash de commit : L'identifiant unique du commit, généralement une longue chaîne de lettres et de chiffres.
  5. Commit(s) parent(s) : Le(s) commit(s) précédent(s) sur lequel(s) ce commit est basé.
  6. Modifications : Les fichiers spécifiques qui ont été ajoutés, modifiés ou supprimés dans ce commit.

Afficher l'historique des commits

Vous pouvez afficher l'historique des commits de votre dépôt Git en utilisant la commande git log. Cela vous montrera une liste de tous les commits dans l'ordre chronologique inverse, le commit le plus récent étant en haut.

git log

Cela affichera le hash de commit, l'auteur, la date et le message de commit pour chaque commit de votre dépôt.

Annuler des commits dans Git

Annuler un commit dans Git consiste à annuler les modifications introduites par un commit spécifique. Cela est utile lorsque vous souhaitez annuler un commit qui a déjà été envoyé (pushed) à un dépôt distant ou partagé avec d'autres membres de l'équipe.

Annuler un commit

Pour annuler un commit, vous pouvez utiliser la commande git revert suivie du hash du commit ou du nom de la branche que vous souhaitez annuler.

git revert <commit-hash>

Cela créera un nouveau commit qui annule les modifications apportées dans le commit spécifié. Le nouveau commit aura un hash de commit différent, mais il sera lié au commit original en tant que commit parent.

Annuler plusieurs commits

Vous pouvez également annuler plusieurs commits à la fois en fournissant une plage de hashs de commits ou de noms de branches.

git revert <start-commit-hash>..<end-commit-hash>

Cela créera un nouveau commit qui annule les modifications apportées dans tous les commits entre le commit de départ et le commit de fin spécifiés.

Annuler un commit de fusion

Si vous avez besoin d'annuler un commit de fusion, vous pouvez utiliser l'option --mainline pour spécifier à quel commit parent vous souhaitez revenir.

git revert -m 1 <merge-commit-hash>

L'option -m 1 indique à Git d'annuler les modifications provenant du premier parent du commit de fusion, qui est généralement la branche dans laquelle vous avez fusionné.

Afficher les commits annulés

Après avoir annulé un commit, vous pouvez afficher l'historique des commits pour voir le nouveau commit qui annule les modifications.

git log

Cela vous montrera le commit annulé, ainsi que le nouveau commit qui annule les modifications.

Conserver les modifications lors de l'annulation d'un commit

Lorsque vous annulez un commit, Git annule les modifications introduites par ce commit. Cependant, si vous avez apporté des modifications supplémentaires aux mêmes fichiers depuis le commit annulé, vous souhaiterez peut-être conserver ces modifications. Git propose plusieurs options pour vous aider à y parvenir.

Utilisation de git revert --no-commit

L'option --no-commit vous permet d'annuler les modifications sans créer immédiatement un nouveau commit. Cela vous donne l'opportunité de réviser les modifications et de décider comment procéder.

git revert --no-commit <commit-hash>

Après avoir exécuté cette commande, vous pouvez réviser les modifications et décider si vous souhaitez créer un nouveau commit ou abandonner les modifications annulées.

Utilisation de git reset

Si vous souhaitez abandonner complètement les modifications annulées et conserver votre répertoire de travail actuel, vous pouvez utiliser la commande git reset.

git reset --hard <commit-hash>

Cela réinitialisera votre répertoire de travail au commit spécifié, annulant ainsi l'opération d'annulation du commit.

Résolution des conflits

Si les modifications annulées entrent en conflit avec vos modifications actuelles, Git vous demandera de résoudre manuellement les conflits. Vous pouvez le faire en éditant les fichiers en conflit, en choisissant quelles modifications conserver, puis en ajoutant les fichiers résolus à la zone de préparation (staging area).

git add <conflicting-files>
git commit -m "Resolve conflicts after revert"

Après avoir résolu les conflits, vous pouvez poursuivre l'opération d'annulation du commit.

Conservation de modifications spécifiques

Si vous souhaitez conserver des modifications spécifiques du commit annulé, vous pouvez utiliser la commande git cherry - pick pour appliquer sélectivement ces modifications à votre branche actuelle.

git cherry - pick <commit - hash>

Cela appliquera les modifications du commit spécifié à votre branche actuelle, vous permettant de conserver les modifications que vous souhaitez tout en annulant le reste.

En utilisant ces techniques, vous pouvez annuler efficacement des commits tout en conservant les modifications que vous souhaitez dans votre répertoire de travail.

Résumé

À la fin de ce tutoriel, vous aurez une compréhension approfondie de la manière d'annuler un commit Git sans perdre vos modifications. Vous apprendrez les techniques essentielles pour annuler les commits indésirables tout en conservant votre progression difficilement acquise. Cette connaissance vous permettra de gérer avec confiance votre dépôt Git et de maintenir une base de code propre et organisée.