На странице GitConcepts Руководства Hg объясняется, как выполнять многие действия git
, с которыми пользователи знакомы в Mercurial.
Mercurial не имеет встроенного поведения git reset --hard
. Однако расширение strip
предоставляет команду strip
, которая выполняет. Для использования сначала включите strip
в вашем ~/.hgrc
файле ::
[extensions]
strip =
Примечание: это расширение поставляется новым в Mercurial 2.8. Предыдущие версии предоставляли команду strip
в mq
расширении .
Теперь вы можете запускать такие команды, как hg strip
или даже hg help strip
. Чтобы удалить набор изменений и все его дочерние элементы, просто укажите этот набор изменений в качестве аргумента hg strip
. Например, чтобы удалить последний только что сделанный вами коммит (после того, как вы использовали команды, которые заставили hg rollback
сообщить, что откат транзакции больше не выполняется), вы можете удалить ревизию tip
. Каждый раз, когда вы запускаете эту команду, другая ревизия будет удалена. Действия hg strip
следует считать необратимыми; незнакомые пользователи должны сделать резервные копии своих репозиториев перед использованием.
$ hg strip tip
Например, с синтаксисом revsets я указываю, что хочу удалить любые мои коммиты, которые приводят к появлению дополнительных головок при запуске hg heads
. Если в приведенном ниже выражении вы укажете конкретную ревизию, отличную от tip
, все в текущей ветви, не являющееся предком выбранной ревизии, будет обрезано. Это похоже на то поведение, которое мне нужно, когда я запускаю команду git reset --hard HEAD
.
$ hg strip "branch(tip) and not(ancestors(tip)::tip)"