Подтвердить что ты не робот

Как удалить фиксацию в Mercurial?

Я хочу полностью удалить транзакцию Mercurial, как если бы она никогда не вводилась в репозиторий и не возвращалась к предыдущей фиксации.

Возможно ли это?

4b9b3361

Ответ 1

Если это была ваша последняя фиксация, и вы никуда не толкали ее, вы можете сделать это с помощью rollback. В противном случае нет. На самом деле, нет. Время для изменения ваших паролей.

Изменить: Было указано, что вы можете клонировать от старой версии и объединять изменения, которые вы хотите сохранить. Это также верно, если вы не подтолкнули его к репо, которое вы не контролируете. Как только вы нажмете, ваши данные, скорее всего, будут очень трудными для возвращения.

Ответ 2

Вы можете попытаться удалить mq-информацию о своей фиксации.

  • Для этого вам нужно перейти в Файл- > Настройки- > Расширения.
  • Проверьте mq и перезапустите gui.
  • После этого просто щелкните правой кнопкой мыши на ненужном коммите и ModifyHistory- > Strip

Ответ 3

Чтобы отредактировать историю, я бы использовал расширение Расширение расширения Histedit.

 hg histedit 45:c3a3a271d11c

Однако имейте в виду, что это имеет смысл только в ситуации, когда вы еще не подтолкнули коммиты к публичному репозиторию, вам принадлежит публичный репозиторий и/или вы можете учитывать все клоны там. Если вы получили следующую ошибку:

abort: can't rebase immutable changeset 43ab8134e7af

Это означает, что Mecurial считает, что это общедоступный набор изменений (см. phase), который уже был нажат - вы можете заставить его быть draft повторить:

hg phase -f -d 45:c3a3a271d11c

Ответ 4

Я встречаюсь довольно часто. Я делаю фиксацию, а затем нажимаю. Но тогда есть что-то входящее, что делает мою новоиспечённую передачу ненужной. Простой hg rollback недостаточно, потому что он отменяет нажатие...

Это то, что нужно сделать:

hg strip <rev>

Вещи безболезненны, когда вы не нажимаете свои изменения в любом месте.

Ответ 5

Вы можете использовать "hg backout" для выполнения обратного слияния в основном. Все варианты обсуждаются в свободно доступной книге "Mercurial: The Definitive Guide":

http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html

Ответ 6

Если это более чем одна фиксация и/или вы уже нажали ее где-то в другом месте, вы можете клонировать ваш репозиторий и указывать последний набор изменений, который должен быть клонирован.

См. мой ответ здесь, как это сделать:
Mercurial: исправить историю borked

Если вы только совершили локальную атаку и не нажали, вы можете просто создать клон локально (как описано в моей ссылке), и все готово.

Если вы уже нажали на какой-либо удаленный репозиторий, вам придется заменить его на ваш клон. Конечно, это зависит от того, сможете ли вы (или разрешили) сделать это.

Ответ 7

Если вы используете черепаху, вы можете использовать историю изменений > strip...

Ответ 8

Да. Если я ошибаюсь, начиная с версии 2.3 (ссылка 2012/08/01) вы можете использовать HisteditExtension с командой drop, чтобы удалить фиксацию вместе с strip или backout для удаления изменений.

Простой поиск Google по этой функции: https://www.google.com/webhp#q=histedit+drop