J'ai créé une fusion (dans la branche "maître") qui se trouve maintenant sur un dépôt Bitbucket. Longue histoire courte: je dois annuler cette fusion.
Je sais que vous pouvez le faire sur le site Github lui-même, mais Bitbucket n’a pas cette fonctionnalité. Je ne comprends pas comment faire cela avec Git sans causer de dégâts.
Vous devez d'abord cloner le référentiel sur votre système local (vous pouvez obtenir l'URL du référentiel au format SSH ou HTTPS à partir de la page "Présentation" du référentiel dans Bitbucket):
git clone [email protected]:my/repo.git
-or-
git clone https://[email protected]/my/repo.git
git checkout master
.. puis annulez le commit le plus récent. Commencez par lister les commits disponibles avec:
git log
.. puis sélectionnez le commit avant la fusion:
git reset --hard 72ead1c4c1778c23c277c4f15bbb68f3bb205f54
.. où le hachage est le hachage du commit avant la fusion (à partir du journal). Enfin, forcez les modifications dans Bitbucket, écrasez l’historique.
git Push -f
Naturellement, si le référentiel est partagé et que ses autres utilisateurs ont extrait votre plus récent commit et l'ont construit au-dessus, ils ne seront pas contents. Dans ce cas, assurez-vous d'informer tout le monde de ce que vous faites.
revert
, comme mentionné dans les autres réponses, est une autre option; il conserve le commit que vous avez fait, mais modifie davantage le référentiel (avec un nouveau commit) de manière à annuler les modifications que vous avez apportées. Que vous souhaitiez utiliser revert
dépend de si vous voulez que les informations de votre commit restent ou non dans l'historique du repo.
Pour plus de détails sur l'annulation des modifications dans git, voir un bonne page de tutoriel d'Atlassian .
Une fonctionnalité "Demande d'extraction inversée" a été mise en œuvre dans Bitbucket en 2017.
Pour annuler une demande d'extraction:
Source: la documentation .
Je suggérerais plutôt de faire un revert
, puisque vous annulez un dépôt public.
git revert HEAD
git Push -f Origin
pour annuler les modifications d’un commit: git revert <commit id>