HG: Отменить фиксацию из истории

У меня есть репозиторий HG с оборотами 1, 2, 3, 4, 5 и 6.

Когда я совершил оборот 4, я неосознанно исказил некоторые изменения в rev3, которых я не должен был. Я не заметил этого, пока rev 6 не был уже совершен.

Мне нужно отменить изменения в rev 4, но затем повторно применить все остальные изменения после этого. В основном отменить фиксацию # 4. Как я могу это сделать?

Ответ 1

Вы хотите hg backout

Отменить/отменить эффект ранее changeset...

Рецидив работает, применяя набор изменений, который будет отменен в противоположном от набора изменений. Этот новый набор изменений привязан к repository и, в конце концов, слит...

Ответ 2

Вы можете использовать расширение MQ:

hg qinit
hg qimport -r 4:tip
hg qpop -a
hg qdelete 4.diff
hg qpush -a
hg qfinish -a

Выше описано, как вы переписываете историю, и это то, что вы хотите, я верю.

Вы также можете использовать hg backout, но это отменяет фиксацию в вашем рабочем каталоге, и вы можете зафиксировать это.