Отменить много коммитов (15) в Mercurial

У меня есть ветка "test", и у меня есть неверные 15 коммитов (это последние коммиты в этой ветке). Мне не нужны эти коммиты, и я хочу их поддержать. Но мне также нужно иметь "тестовую" ветку, я не могу просто закрыть ее.

  • Как отказаться от многих коммитов? Сложно сделать это с отступлением ртутного стандарта, будет слишком много коммитов и слияний. Есть ли способ объединить все возвратные коммиты в один большой коммит?

  • Есть ли способ переименовать ветку и закрыть ее?

Все изменения существуют на удаленном сервере. Эти изменения не являются последними во всем репо, они являются последними наборами изменений только в тестовой ветке.

2 ответа

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

1) просто совершить --close-branch кончик вашей тестовой ветки, update до последней ревизии, которая была хороша для этой ветви, и заново откройте вашу тестовую ветку с новыми коммитами оттуда. Это работает, потому что именованная ветвь может иметь несколько головок.

2) использовать hg revert -r <last good rev> и совершать. Это должно сделать рабочий каталог таким же, как <last good rev> и затем вы можете зафиксировать набор изменений, который эффективно отменяет то, что произошло в 15 изменениях, которые вы хотите удалить. я хотел бы использовать hg diff -r <last good rev> чтобы убедиться, что это действительно так, поскольку вам может потребоваться исправить файлы, которые были добавлены или удалены.

Если вы в состоянии strip изменения с сервера (как упомянуто в ответе @Dalija), но хотите сохранить версию локально для возможного использования в будущем, проверьте hg phase заставить фазу secret локально после strip -из них отовсюду. Таким образом, вы все равно будете иметь их, но они не будут выдвинуты по умолчанию.

Ты можешь использовать hg strip для удаления наборов изменений и их потомков из хранилища. Но вам придется делать это во всех хранилищах, где вы хотите удалить свои test ветви или они вернутся, когда вы pull,

https://www.mercurial-scm.org/wiki/StripExtension

Другие вопросы по тегам