web-dev-qa-db-fra.com

Mercurial: comment revenir à une révision particulière?

Je travaille sur un serveur en direct. J'ai mis à jour pour donner un pourboire et cela a causé des problèmes: je dois revenir à un ensemble de modifications particulier (388) où les choses allaient bien.

Je n'ai aucun changement de valeur sur le serveur, le changeset local n'a pas d'importance du tout. En fait, je veux vraiment tuer tout changement ou fusion accidentel local afin de ne pas confondre les choses.

Comment revenir à un ensemble de modifications particulier et supprimer les modifications locales? Est-ce quelque chose à voir avec:

hg revert 

---- METTRE À JOUR ---

Pour clarifier, ce que je voudrais faire, c'est d'abord rétablir tout localement au changeset 388, puis m'assurer que mon dépôt local est dans un état tel que lorsque je le fais

hg status

Je ne reçois aucune sortie. Sinon, j'ai le sentiment désagréable que la prochaine fois que je tirerai la pointe, il y aura des conflits à gérer - que je veux éviter, car les changements locaux sont sans valeur.

---- METTRE À JOUR ---

Pour quelqu'un d'autre dans cette situation, ce qui a finalement été résolu pour moi était:

rm -rf <repo_dir>
hg clone http://repository
hg update -r 388

Cela tuera tous vos changements locaux, alors procédez avec prudence (mais c'est ce que je voulais dans ce cas).

21
AP257
server:
- ..
- rev 386
- rev 387
- rev 388
- rev 389

clone to production

-- testing stuff, it doesn't work!
-- panic!
-- rev 390 (in panic)
-- rev 391 (in panic)
-- cool down, thinking, need to go back to 388
-- one way: hg update -C -rev 388 (to keep 390, 391)
-- other way: rm -rf dir (to discard 390, 391)
-- hg clone http://server/hg
-- cd dir
-- hg update 388 
-- testing, now works

Il y a aussi une merveilleuse extension de purge . Très solide, il supprime tous les fichiers non suivis du répertoire de travail.

13
Valentin Vasilyev

Utilisez simplement la commande ci-dessous pour obtenir une révision.

hg revert -r REV

C'est en conflit avec --all.

Pour supprimer tous les changements locaux, --all devrait fonctionner.

hg revert --all

N'utilisez pas rollback. C'est une procédure irréversible, elle doit donc être utilisée avec précaution.

MODIFIER

Vous pouvez mettre à jour avec l'option --clean. Cela annulera toute modification non validée. Et puis mettez à jour certains changements.

20
simplyharsh

Je ne pense pas que ce que vous voulez soit vraiment clair, mais mon interprétation serait hg update -C -rev 388 mais vous pourriez tout aussi bien être après le retour, ou peut-être (peu probable) même annuler. ma réponse à cette question donne une bonne différence entre la mise à jour et la restauration

vous avez vraiment besoin de déterminer ce que vous voulez voir dans la copie de travail ET ce que vous voulez que l'état de l'historique soit comme choisir entre eux

5
jk.