Es klingt wie Sie nach backout
suchen. Siehe:
hg help backout
Ich glaube nicht, dass mehrere Commits in einem Rutsch wieder heraus kann, so dass man sie einzeln wieder aus:
hg backout D
hg backout C
hg backout B
Diese drei Commits auf den D schaffen, dass sind die Umkehrung von D, und C und B. Wenn Sie diese Commits in einem Changeset kombinieren möchten, können Sie sie mit rebase --collapse
oder einer von mehreren anderen Erweiterungen (z. B. histedit
oder oder collapse
Erweiterungen) falten.
Wenn Sie nicht wollen, um die einzelnen Änderungen rückgängig zu machen, aber alles in einem Rutsch tun, könnten Sie Folgendes tun:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
Es ist hässlich, aber es funktioniert. Allerdings werden die Umbenennungen nicht umgekehrt aufgezeichnet. Um ehrlich zu sein, würde ich nicht empfehlen, dies zu tun, wenn Sie so viel zurückgeben müssen, dass einzelne Backout-Befehle zu viel Mühe beim Tippen geben, frage ich mich, ob das Zurücksetzen wirklich das ist, was Sie tun sollten Fall.
Alternativ könnten Sie tun, wie Jim und Rafael vorgeschlagen, und entscheiden, dass B, C und D auf einem Zweig sind, und wieder auf A aktualisieren und dort weitermachen (zu diesem Zeitpunkt Geschichte aussperren). Dies könnte angemessener sein.
Dies, aber nur wenn D ein HEAD ist. Es gibt keine Müllsammlung in hg, also gehen B, C und D nicht verloren. D wird nur ein Kopf bleiben, den du schieben kannst oder nicht - bis zu dir. – DanMan