Простое решение, которое часто упускают из виду для удаления нежелательных коммитов, - просто клонировать их:
hg clone origin new_clone
rm -rf repo_with_unwanted_commits
Теперь new_clone
возвращает вас к подсказке удаленного репо.Если у вас есть другие коммиты в вашем клоне, которые вы еще не вытолкнули, но все еще хотите, вы можете клонировать локально:
hg clone -r tip_you_want repo_with_unwanted_commits new_clone
rm -rf repo_with_unwanted_commits
Теперь new_clone
содержит все докоммиты, которые вы хотели, но исключая те, которые вы хотели уничтожить.В этом случае вам просто нужно настроить [paths]
в new_clone
в hgrc, чтобы он указывал на исходный репозиторий, и вы вернулись к тому, с чего начали.
Это просто и не требует расширений,но обратите внимание, что предложение manojlds об использовании hg strip
будет быстрее, и вы сможете сохранить все неотслеживаемые файлы, которые вам могут понадобиться.В любом случае это будет работать только в том случае, если вы еще не добавили наборы изменений, которые хотите удалить.Если вы уже нажали, ваш единственный безопасный вариант - hg backout
.