Отменить много коммитов (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
,