Comment inverser une fusion Git

Faire accidentellement la mauvaise chose est très courant lorsque vous travaillez avec Git, mais heureusement, il est construit pour garder une trace de l'historique des versions de votre référentiel. Il existe toujours un moyen d'annuler les modifications apportées, et si vous souhaitez annuler une fusion Git, c'est assez simple.

Annuler une fusion Git

Fondamentalement, il y a deux façons de procéder, et tout dépend si vous avez déjà appliqué ou non les modifications à votre contrôle de source. Si vous vous êtes déjà engagé et poussé vers un service comme GitHub, il est généralement considéré comme immuable, à moins que vous ne vouliez forcer le push, ce qui est dangereux. Vous ne voulez jamais “supprimer” les commits et les fusions git sont ajoutés en tant que “merge commits.” Vous voudrez utiliser git revert pour annuler les modifications en toute sécurité et valider cette annulation en tant que nouvelle validation.

Cependant, si vous venez de gâcher quelque chose localement, maudissez votre clavier et recherchez une solution sur Google, vous pouvez toujours supprimer en toute sécurité le commit de fusion et garder votre historique Git propre avec une simple réinitialisation de git.

Réinitialiser localement

Il est plus simple et plus sûr de gérer les réinitialisations Git avec un client GUI Git, où vous pouvez facilement voir la branche histoire. Ce n'est pas nécessaire bien sûr, mais le visuel aide lorsque vous avez des branches complexes.

< p>Dans cet exemple, nous souhaitons annuler la fusion de la branche de fonctionnalité dans la branche principale. Étant donné que la branche de fonctionnalité n'a pas été réellement touchée, nous voulons réinitialiser le “principal” étiquette de branche pour pointer vers le dernier commit.

Pour ce faire, nous voulons git checkout la branche principale, puis réinitialiser au commit précédent. Le raccourci pour cela est HEAD^, et nous pouvons effectuer une réinitialisation matérielle au dernier commit. Si vous n'êtes pas à l'aise avec un “destructeur” reset, vous pouvez effectuer une réinitialisation logicielle, puis annuler manuellement les modifications de validation de fusion.

git reset –hard HEAD^

Comme vous pouvez le voir, cela supprime complètement le commit de fusion et laisse la branche de fonctionnalité intacte.

RELATEDComment fonctionne réellement Git Reset ? Réinitialisations logicielles, matérielles et mixtes expliquées

Si le commit que vous devez réinitialiser n'est pas le dernier avant le HEAD actuel de la branche, vous pouvez simplement copier l'ID SHA1 pour celui-ci et réinitialiser ce commit spécifique.

Annuler un commit déjà poussé

Malheureusement, si vous avez déjà poussé, il n'y a aucun moyen de supprimer le commit de fusion sans écraser l'historique de votre référentiel. Vous pouvez suivre les mêmes étapes que celles indiquées ci-dessus et pousser vers le référentiel en amont (comme GitHub) avec l'indicateur –force. Mais cela est généralement considéré comme destructeur et dangereux lorsque vous avez plusieurs collaborateurs, car ils devront tous mettre à jour leurs dépôts locaux.

L'autre façon d'annuler les commits dans Git est de les annuler. L'annulation d'un commit appliquera les modifications opposées au référentiel – pour chaque ligne ajoutée, cette ligne est supprimée. Pour tout ce qui a été supprimé, il est rajouté, et ainsi de suite. Cela inverse efficacement la validation, l'inconvénient étant que ce processus encombrera un peu votre historique de version. Généralement cependant, c'est une bonne pratique pour annuler les erreurs.

Annuler un commit est assez simple. Tout d'abord, vous devrez exécuter git log pour obtenir une liste des commits et leurs numéros d'identification.

Ensuite, vous pouvez copier le hachage SHA1 et annuler le commit avec git revert :

git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f

Vous devrez pousser ce nouveau “revert commit” à GitHub pour résoudre le problème.

LIRE LA SUITE

  • › Quelle est la limite de caractères pour ChatGPT ?
  • › Vous pouvez (encore une fois) obtenir Game Pass Ultimate pour 1 $
  • › Obtenez le MacBook Air M1 pour seulement 750 $, le prix le plus bas à ce jour
  • › GIMP 2.99.16 a de nouvelles options d'interface et plus de formats de fichiers
  • › Économisez jusqu'à 1 199 $ sur les centrales électriques portables BLUETTI pour Prime Day
  • &rsaquo ; ChatGPT et GPT 3 : quelle est la différence ?

Posted

in

by

Tags: