Comment puis-je annuler ma dernière modification accidentellement commitée (non poussée) dans Mercurial ?
Si possible, un moyen de le faire avec TortoiseHg serait préférable.
Mise à jour
Dans mon cas concret, j'ai commité un changeset (pas poussé). Puis j'ai tiré et mis à jour depuis le serveur. Avec ces nouvelles mises à jour, j'ai décidé que mon dernier commit est obsolète et que je ne veux pas le synchroniser. Il semble donc que hg rollback
n'est pas exactement ce que je recherche, car cela annulerait le pull au lieu de mon commit.
1 votes
Et si on faisait deux
hg rollback
et de tirer à nouveau ?1 votes
Le premier rollback annule le pull, le second me dit "no rollback information available".
1 votes
J'ai rencontré la même situation, et pour autant que je sache, une fois que vous avez effectué une autre opération, vous ne pouvez pas revenir en arrière ou la supprimer de l'historique. Vous devriez cloner à nouveau le référentiel hg.
3 votes
strip --keep
: stackoverflow.com/questions/29413851/ résout directement la tâche, tout comme MQ qimport. Alternativement, il peut être préférable de simplementrebase
dans le scénario si les changements locaux sont également à conserver et il n'y a pas de conflit. (Utilisez une fusion pour garder des modifications combinées des deux branches lorsque c'est l'objectif final souhaité pour le graphe, en particulier dans le cas d'une situation non évolutive). Il peut aussi être valide de simplement fermer la branche, ce qui préserve encore l'historique (mais différemment d'une fusion) selon l'état final désiré.2 votes
Comme le dit @user2864740,
hg strip --keep
est la commande à utiliser, mais vous devez fournir une révision, par exemple :hg strip --keep -r .
. Cette réponse explique bien stackoverflow.com/a/19064016/12865710 votes
Duplicata possible de Équivalent mercuriel (hg) de git reset (--mixed ou --soft)
0 votes
@ForeverWintr J'ai posé cette question plus d'un an et demi avant le possible doublon que vous évoquez. Si c'est le cas, stackoverflow.com/questions/13112280/ est le duplicata.
0 votes
@MartinBuberl Je ne voulais pas vous offenser ; c'est juste que cette question a une réponse correcte et que celle-ci n'en a pas. Je ne sais pas quelle est la méthode officielle du SO pour gérer une telle situation.
0 votes
@ForeverWintr Je dirais que 62 (nombre actuel) personnes pensent que la réponse de VonC est correcte dans ce contexte. Je ne pense pas vraiment que les questions soient les mêmes, c'est-à-dire qu'elles soient dupliquées. Sans vouloir vous offenser.
0 votes
La réponse de VonC était correct en 2011, mais il l'a édité en 2013 pour refléter le fait que hg rollback a depuis été déprécié. Il recommande d'utiliser
hg commit --amend
à la place, mais n'explique pas comment l'utiliser pour "annuler le dernier commit" comme dans votre question.