Ich bin auch auf dieses Problem gestoßen. Ich habe 2 gemacht commitund wollte beide Commits zurücksetzen und löschen.
$ hg rollback
Aber hg rollbackrollt einfach zurück zum letzten Commit, nicht zu den 2 Commits. Zu diesem Zeitpunkt habe ich das nicht bemerkt und den Code geändert.
Als ich herausfand, hg rollbackdass gerade ein Commit zurückgesetzt wurde, stellte ich fest, dass ich es verwenden konnte hg strip #changeset#. Also habe ich hg log -l 10die letzten 10 Commits gefunden und das richtige Änderungsset erhalten, das ich wollte strip.
$ hg log -l 10
changeset: 2499:81a7a8f7a5cd
branch: component_engine
tag: tip
user: myname<myname@email.com>
date: Fri Aug 14 12:22:02 2015 +0800
summary: get runs from sandbox
changeset: 2498:9e3e1de76127
branch: component_engine
user: other_user_name<name@email.com>
date: Mon Aug 03 09:50:18 2015 +0800
summary: Set current destination to a copy incoming exchange
......
$ hg strip 2499
abort: local changes found
Was heißt abort: local changes founddas Dies bedeutet, dass hgÄnderungen am Code gefunden wurden, die noch nicht festgeschrieben wurden. Um dies zu lösen, sollten Sie hg diffden Code speichern, den Sie geändert haben, und hg revertund hg strip #changeset#. Genau wie dieser:
$ hg diff > /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
$ hg revert file_you_have_changed
$ hg strip #changeset#
Nachdem Sie die oben genannten patchSchritte ausgeführt haben, können Sie die Diff-Datei und Ihren Code wieder zu Ihrem Projekt hinzufügen.
$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff