web-dev-qa-db-fra.com

Hg: annuler un commit de l'histoire

J'ai un référentiel HG avec Revs 1, 2, 3, 4, 5 et 6.

Lorsque j'ai commis la Rev 4, je rachetait des changements de Rev3 que je ne devrais pas avoir. Je n'ai pas remarqué cela avant que REV 6 n'ait déjà été commis.

J'ai besoin d'annuler les changements dans le Rev 4, mais puis de ré-appliquer tous les autres changements après cela. Essentiellement défaut de commettre # 4. Comment puis je faire ça?

30
Donn Felker

Vous voulez HG Backut

Revert/Annuler l'effet d'un précédent changeant ...

Backout fonctionne en appliquant une correspondance qui est l'opposé de la modification à suivre. Cette nouvelle modification est engagée dans référentiel , et finalement fusionné ...

40
Jim Bolla

Vous pouvez utiliser l'extension MQ:

hg qinit
hg qimport -r 4:tip
hg qpop -a
hg qdelete 4.diff
hg qpush -a
hg qfinish -a

Ce qui précède est la façon dont vous réécrivez l'histoire, ce que vous voulez, je crois.

Vous pouvez aussi utiliser hg backout Mais cela annule un engagement dans votre répertoire de travail et vous pouvez commettre ça.

5
manojlds