Я хочу полностью удалить транзакцию Mercurial, как если бы она никогда не вводилась в репозиторий и не возвращалась к предыдущей фиксации.
Возможно ли это?
Я хочу полностью удалить транзакцию Mercurial, как если бы она никогда не вводилась в репозиторий и не возвращалась к предыдущей фиксации.
Возможно ли это?
Если это была ваша последняя фиксация, и вы никуда не толкали ее, вы можете сделать это с помощью rollback
. В противном случае нет. На самом деле, нет. Время для изменения ваших паролей.
Изменить: Было указано, что вы можете клонировать от старой версии и объединять изменения, которые вы хотите сохранить. Это также верно, если вы не подтолкнули его к репо, которое вы не контролируете. Как только вы нажмете, ваши данные, скорее всего, будут очень трудными для возвращения.
Вы можете попытаться удалить mq-информацию о своей фиксации.
Чтобы отредактировать историю, я бы использовал расширение Расширение расширения Histedit.
hg histedit 45:c3a3a271d11c
Однако имейте в виду, что это имеет смысл только в ситуации, когда вы еще не подтолкнули коммиты к публичному репозиторию, вам принадлежит публичный репозиторий и/или вы можете учитывать все клоны там. Если вы получили следующую ошибку:
abort: can't rebase immutable changeset 43ab8134e7af
Это означает, что Mecurial считает, что это общедоступный набор изменений (см. phase), который уже был нажат - вы можете заставить его быть draft
повторить:
hg phase -f -d 45:c3a3a271d11c
Я встречаюсь довольно часто. Я делаю фиксацию, а затем нажимаю. Но тогда есть что-то входящее, что делает мою новоиспечённую передачу ненужной. Простой hg rollback
недостаточно, потому что он отменяет нажатие...
Это то, что нужно сделать:
hg strip <rev>
Вещи безболезненны, когда вы не нажимаете свои изменения в любом месте.
Вы можете использовать "hg backout" для выполнения обратного слияния в основном. Все варианты обсуждаются в свободно доступной книге "Mercurial: The Definitive Guide":
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
Если это более чем одна фиксация и/или вы уже нажали ее где-то в другом месте, вы можете клонировать ваш репозиторий и указывать последний набор изменений, который должен быть клонирован.
См. мой ответ здесь, как это сделать:
Mercurial: исправить историю borked
Если вы только совершили локальную атаку и не нажали, вы можете просто создать клон локально (как описано в моей ссылке), и все готово.
Если вы уже нажали на какой-либо удаленный репозиторий, вам придется заменить его на ваш клон. Конечно, это зависит от того, сможете ли вы (или разрешили) сделать это.
Если вы используете черепаху, вы можете использовать историю изменений > strip...
Да. Если я ошибаюсь, начиная с версии 2.3 (ссылка 2012/08/01) вы можете использовать HisteditExtension с командой drop
, чтобы удалить фиксацию вместе с strip
или backout
для удаления изменений.
Простой поиск Google по этой функции: https://www.google.com/webhp#q=histedit+drop