Технически, вы не можете: Набор изменений включает в себя всю свою родительскую историю, поэтому, удалив 123b
, вы уничтожите всех его потомков. Любые непосредственные дети теперь повреждены, поскольку они ссылаются на несуществующий 123b
, а любые дети этих детей косвенно повреждены и т. Д.
Однако есть и яркая сторона. Вы можете заменить всех потомков новыми, улучшенными потомками. Для этого используйте hg histedit
. Это связанное расширение, которое вы должны сначала включить. (См., Например, Каковы лучшие и обязательные расширения hg / mercurial? ) (В качестве альтернативы, можно использовать rebase или трансплантат, но я не рекомендую - гистедит проще.)
Обратите внимание, что histedit по существу эквивалентен удалению набора изменений и всех его потомков, а затем добавлению новых наборов изменений. Таким образом, если вы сделали набор изменений общедоступным, отправив его другому клону, он вернется из этого другого клона позже вместе со всеми его потомками. По умолчанию histedit не позволяет вам редактировать общедоступные наборы изменений, чтобы вы не допустили эту ошибку. См. Также https://book.mercurial -scm.org / read / change-history.html .
(Существует лучший (на мой взгляд) способ, но он включает добавление не связанного расширения, в частности расширение evolve . См. этот ответ на связанный вопрос. I фактически не использовал evolve, мне просто нравится теория, лежащая в его основе.)