Wygląda na to, że szukasz backout
. Zobacz:
hg help backout
Nie sądzę, może wycofać się z wielu zobowiązuje jednym razem, więc trzeba z powrotem je indywidualnie:
hg backout D
hg backout C
hg backout B
To stworzy trzy rewizje w górnej części D, która są odwrotnością D, C i B. Jeśli chcesz połączyć te zatwierdzenia w jeden zestaw zmian, możesz je złożyć, używając rebase --collapse
lub jednego z wielu innych rozszerzeń (np. histedit
lub mq
lub collapse
rozszerzeń).
Jeśli nie chce się wycofać poszczególne zmiany, ale zrobić wszystko za jednym zamachem, można wykonać następujące czynności:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
Jest brzydki, ale działa. Jednak nie rejestruje to zmian nazw w odwrotnej kolejności. Szczerze mówiąc, nie polecałbym tego, jeśli chcesz się wycofać tak bardzo, że poszczególne polecenia wycofania są zbyt trudne do napisania, to zastanawiam się, czy wycofanie się jest naprawdę tym, co powinieneś chcieć robić dla tego konkretnego walizka.
Możesz też zrobić, jak sugerują Jim i Rafael, i zdecydować, że B, C i D znajdują się w oddziale, i zaktualizować z powrotem do punktu A i kontynuować zaangażowanie (oddzielając historię w tym momencie). To może być bardziej odpowiednie.
To, ale tylko jeśli D jest GŁOWĄ. Nie ma zbierania śmieci w hg, więc B, C i D nie zostaną utracone. D pozostanie HEAD, które możesz naciskać lub nie - do ciebie. – DanMan