web-dev-qa-db-fra.com

Comment "annulez-vous" la dernière validation sur Mercurial?

J'ai un référentiel Mercurial que je n'utilise qu'en local ... C'est pour mon usage personnel (donc je ne "Push" nulle part).

J'ai fait un commit avec 3 fichiers, mais après cela, j'ai compris que je devais faire un commit de 4 fichiers ...

Existe-t-il un moyen de "restaurer" mon dernier (dernier, un seul) commet et de le "renouveler" avec les fichiers corrects?

(Je ne sais pas pourquoi, mais mon option " Modifier la révision actuelle " n'est pas active, je ne peux donc pas l'utiliser ...)

61
serhio

Vous avez juste besoin de cette commande:

hg rollback

Voir: http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html .

(Techniquement, il est obsolète à partir de la version 2.7, août 2013, mais je n'ai pas encore vu d'alternative qui fasse exactement la même chose.)

86
Martin Eden

La réponse est strip (si vous ne l’avez pas activé, vous pouvez vérifier comment l’activer ici: https: // stackoverflow. com/a/18832892/179581 ).

Si vous voulez rétablir uniquement la dernière utilisation du commit:

hg strip --keep -r .

Si vous souhaitez revenir à un commit spécifique:

hg strip --keep -r 1234

L'utilisation de strip ramènera l'état de vos fichiers au commit spécifié, mais vous les aurez en tant que modifications en attente afin que vous puissiez les appliquer avec votre fichier à un nouveau commit.

Récupérez vos données supprimées:

Si vous avez mal utilisé la commande ou si vous souhaitez récupérer vos modifications, vous pouvez trouver vos fichiers supprimés dans le dossier .hg/strip-backup .

Tutoriel sur la façon de restaurer vos fichiers, ou tout simplement google pour cela (fonctionne de la même manière sur tous les systèmes d'exploitation).

Crédit à ForeverWintr

29

En hg moderne:

hg uncommit

ou, pour votre problème exact:

hg add file4
hg amend
3