J’ai apporté quelques modifications à mon repo git que je souhaite annuler.
Mon repo git ressemblait à ceci:
AB---- master \ / CD * develop
J’étais sur la twig de develop
, j’ai oublié que cela différait de la twig principale, j’ai fait un changement sur le develop
, je l’ai fusionné dans master
, puis j’ai poussé vers ma télécommande (appelée publish
).
Comme il n’y avait pas de changement sur le maître depuis B (ancêtre commun), git a fait une fusion rapide.
Maintenant, mon repo ressemble à ceci:
ABCD master, develop, remotes/publish/master, remotes/publish/develop.
Je voulais revenir sur la dernière fusion, en restaurant master
à B.
De ce que j’ai lu dans Comment défaire les derniers commits dans Git? , J’ai utilisé git reset sha-of-B
pour restaurer ma twig master
à la révision B.
Des questions:
Si vous réinitialisez le maître de succursale, il ne touchera pas la twig de développement. Afin de repayer tout en ordre, vous devriez faire:
git checkout master git reset --hard sha-of-B git checkout develop git reset --hard sha-of-D git checkout master git merge develop --no-ff
git reset --hard @{1}
git push publish develop --force-with-lease=master
--force-with-lease
de manière sûre --force
peut écraser silencieusement le travail des autres, donc je ne l’utilise jamais Si, apparemment, vous avez été mis au develop
lorsque vous avez lancé git reset
, c’est ce qui vous a fait mal.
Vous pouvez corriger le develop
comme suit:
git checkout develop git merge --ff-only D
Maintenant, vous pouvez restaurer le master
sur B:
git checkout master git reset --hard B
Revenez pour develop
et pousser:
git checkout develop git push develop