Parece que está buscando backout
. Ver:
hg help backout
no creo que pueda retirarse múltiples confirmaciones de una sola vez, así que hay que apoyarlos de forma individual:
hg backout D
hg backout C
hg backout B
Esto creará tres confirmaciones en la parte superior de la D que son al revés de D, y C, y B. Si desea combinar estos commits en un solo conjunto de cambios, puede doblarlos usando rebase --collapse
o una de una serie de otras extensiones (por ejemplo, las extensiones histedit
o mq
o collapse
).
Si no desea realizar una copia a cabo los cambios individuales, sino hacerlo de una sola vez, se puede hacer lo siguiente:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
Es feo, pero funciona. Sin embargo, esto no registra el cambio de nombre en reversa. Sin embargo, para ser sincero, no recomendaría hacer esto, si necesitas dar marcha atrás tanto que los comandos de retroceso individuales son demasiado problemáticos para escribirlo, me pregunto si retroceder es lo que realmente deberías estar haciendo para ese particular caso.
Alternativamente, podría hacer lo que Jim y Rafael sugirieron, y decidir que B, C y D están en una rama, actualizar a A y continuar cometiendo allí (dividiendo el historial en ese punto). Esto puede ser más apropiado.
Esto, pero solo si D es una CABEZA. No hay recolección de basura en hg, por lo que B, C y D no se perderán. D seguirá siendo una CABEZA que puedes empujar o no, depende de ti. – DanMan