Sembra che stiate cercando backout
. Vedere:
hg help backout
non credo che si può tornare indietro multipli impegna in una sola volta, in modo da avere a loro tornare indietro singolarmente:
hg backout D
hg backout C
hg backout B
Questo creerà tre commit in cima a D che sono il contrario di D, C e B. Se si desidera combinare questi commit in un changeset, è possibile piegarli utilizzando rebase --collapse
o uno dei numerosi altri interni (ad esempio le estensioni histedit
o collapse
).
Se non si desidera eseguire le singole modifiche, ma fare tutto in una volta, si potrebbe procedere come segue:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
E 'brutto, ma funziona. Tuttavia questo non registra i nomi in negativo. Per essere onesti però, non consiglierei di farlo, se hai bisogno di tirarti indietro così tanto che i singoli comandi di backout sono troppo difficili da scrivere, mi chiedo se il back out sia davvero quello che dovresti fare per quel particolare Astuccio.
In alternativa, si potrebbe fare come suggerito da Jim e Rafael, e decidere che B, C e D sono su un ramo, e aggiornare di nuovo ad A e continuare a commettere lì (dividendo la cronologia in quel punto). Questo potrebbe essere più appropriato.
fonte
2012-07-23 08:19:13
Questo, ma solo se D è un TESTA. Non ci sono garbage collection in hg, quindi B, C e D non andranno persi. D rimarrà solo una TESTA che puoi spingere o meno - fino a te. – DanMan