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.
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.
LinkedInArticle connexe - Git Revert
- Supprimer les commits locaux dans Git
- Rétablir les modifications locales à l'état précédent dans Git
- Revenir à un commit précédent dans le référentiel dans Git