У меня есть клон центрального репо в редакции 2048. Я хочу удалить последние 10 наборов изменений в моем локальном репо, как если бы я вернулся вовремя две недели назад.Я полагаю, я мог бы удалить свое локальное репо и сделать "hg clone -rev 2038", но это было бы долго (клонирование репо занимает несколько минут).Есть ли способ просто «снять» некоторые наборы изменений?
"hg clone -rev 2038"
Примечания:
Используйте команду strip:
hg strip -r 2039
Эта команда предоставляется StripExtension .Он распространяется как часть Mercurial 2.8 и более поздних версий, но вам нужно сначала включить его, добавив следующие строки в ваш .hgrc или Mercurial.ini: MqExtension .
Чтобы предотвратить случайное уничтожение истории, команда создаст в .hg/strip-backup/ резервный пакет, который можно при необходимости hg unbundle снова.
.hg/strip-backup/
hg unbundle
Клонирование вашего локального репо должно быть быстрым. Я полагаю, «несколько минут» относится к удаленному репо?
Вы можете использовать hg clone <local repo> <new repo> -r <revision> только для клонирования до определенной ревизии.
hg clone <local repo> <new repo> -r <revision>
Чтобы удалить набор изменений, который уже был зафиксирован и отправлен, используйте:
hg backout -r (changeset number)
Чтобы удалить ревизию, которая была зафиксирована, но не была отправлена, используйте:
hg strip -r (changeset number)
Для версий, предшествующих Mercurial 2.8, Strip был частью MqExtension. Если вам нужно включить старые расширения MQ, вы можете сделать это, добавив:
[extensions] hgext.mq =
вВаш файл ~ / .hgrc (или mercurial.ini).
Раньше информация о Strip была здесь , но теперь ее можно найти здесь .