Rétablir le commit de fusion dans Git

Abdul Jabbar 30 janvier 2023
  1. Rétablir le commit Git qui n’est pas poussé
  2. Rétablir le commit Git déjà poussé
Rétablir le commit de fusion dans Git

Parfois, nous devons fusionner deux branches ou plus, puis pousser le commit vers la branche souhaitée. Mais ensuite, nous réalisons que nous n’avons pas besoin de cette fusion dans ce référentiel, donc la question ici est de savoir comment annuler ou annuler un commit de fusion qui est déjà poussé. Rien à craindre. Git a une excellente solution pour ce problème qui est discuté ci-dessous.

Il existe deux façons de gérer cette situation en fonction du problème; la première est qu’il n’a pas encore été poussé vers le référentiel mais qu’il a été validé. Une autre est qu’il est validé et poussé à la fois sur le référentiel. les deux situations ont été discutées ci-dessous:

Rétablir le commit Git qui n’est pas poussé

Il est impossible de revenir directement sur un commit dans Git. Malgré cela, nous devons vérifier le commit avant de le rétablir. Après l’avoir annulé, la position du répertoire de travail est maintenant la même que la position du répertoire de travail avant que nous ayons poussé le commit.

Nous pouvons maintenant appliquer la commande git reset pour remettre le pointeur d’index à sa place, c’est-à-dire la position avant le commit. Par exemple, si nous voulons conserver les modifications des commits Commit1 et Commite3 mais annuler les modifications du commit Commit2, exécutez cette commande.

git reset HEAD~3

Cette commande ramènera le pointeur d’index à la position avant le commit Commit2. Après avoir annulé le commit, nous devons à nouveau ajouter les fichiers modifiés au répertoire de travail. Par exemple, exécutez les commandes suivantes :

git checkout Commit1 
git add Commit1  
git checkout Commit3 
git add Commit3
git commit

Après cela, nous pouvons pousser les commits Commit1 et Commit3 vers le référentiel distant.

git push

Si nous voulons fusionner deux branches puis annuler les modifications d’une branche, nous pouvons utiliser la commande suivante :

git merge --abort

Cette commande est utilisée pour annuler le processus de fusion. Après cela, nous pouvons annuler les modifications apportées à la branche. Les commandes décrites dans cette section sont utiles si nous voulons annuler l’effet du dernier commit ou de plusieurs commits.

Cependant, si nous voulons annuler l’effet des deux derniers commits ou plus, nous devons réinitialiser le répertoire de travail à l’état avant le dernier commit. C’est parce qu’il est impossible de revenir directement sur un ou plusieurs commits.

Rétablir le commit Git déjà poussé

Dans l’autre cas, si nous avons déjà poussé le commit de fusion vers la branche distante et l’avons poussé aussi, nous devons faire un nouveau commit qui annule les modifications. Nous allons exécuter la commande suivante :

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

Cela développera un nouveau commit qui annulera les modifications du commit de fusion précédent. Cependant, ce nouveau commit contiendra également toutes les modifications du commit de fusion d’origine, nous devrons donc modifier le message de commit pour indiquer qu’il s’agit d’un commit de retour. Alors que l’option que nous avons mentionnée, -m 1 indiquera à Git que nous voulons conserver la branche fusionnée.

La commande revert ne change pas l’arbre de travail. Elle modifie seulement l’index. La commande revert a aussi une option pour restaurer le message original du commit. Dans l’exemple donné ci-dessus, l’option -m est utilisée pour restaurer le message original du commit. La commande revert peut également être utilisée pour restaurer un fichier spécifique à partir du commit intégré.

Git revert est un outil utile à utiliser sur nos branches locales lorsque nous procédons à un changement et décidons que nous ne voulons plus conserver ce changement. Il n’est pas recommandé de l’utiliser sur les branches publiques.

Comme nous le savons, git revert est purement réversible, il est impossible d’annuler ses modifications. Si nous exécutons git revert sur un commit qui n’est pas le commit actuel sur sa branche, nous devons être très prudents car git revert développera de nouveaux commits qui auront de nouveaux ID de commit.

Si nous exécutons plus tard git reset --hard pour annuler les modifications apportées par git revert, nous supprimerons également les modifications apportées par le développeur qui a créé le commit que git revert annule. Il est possible d’utiliser git revert sur une branche publique, mais cela n’est pas une bonne idée à mon avis. Il est préférable de développer une nouvelle branche pour effectuer une modification puis de la fusionner dans la branche master lorsque nous avons terminé.

Si nous voulons utiliser git revert sur une branche publique, assurez-vous que nous sommes le seul à travailler sur cette branche, sinon nous annulerons le travail des autres.

Auteur: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Article connexe - Git Revert

Article connexe - Git Merge