Насколько я знаю, у Mercurial нет инструментов для разделения наборов изменений.Если вам повезет, все необходимые изменения находятся в отдельных наборах изменений, и тогда вы можете использовать TransplantExtension .Я думаю, это можно сравнить с вишневым выбором Git, но я не использовал git слишком много.
Вы также можете использовать hg diff, чтобы вручную зафиксировать изменения в определенном файле в новой ветви.Используйте диапазон оборотов, чтобы отметить всю исходную ветвь:
hg diff myfile -r startrevision:endrevision
Вывод можно рассматривать как патч.Сделайте это для каждого файла, который вы хотите, и передайте их, а затем объедините.Пропуск разрушительных изменений.Вы также можете, конечно, сделать это несколько раз, когда деструктивные изменения находятся в середине диапазона ревизий.,Это хардкорное редактирование истории больше относится к области Git (обратите внимание, что это только мое мнение).Сохраняйте свои стабильные изменения и разрушительные изменения в отдельных наборах изменений (и, возможно, даже в отдельных ветвях).Я использую трансплантат , rebase и strip для перемещения изменений.Когда все это сделано, они объединяются и правильно передаются.
Да, и проверяем MercurialQueues .Я не использовал это сам, но я видел, что это делает некоторые сумасшедшие вещи.Может быть, он способен делать что-то в соответствии с тем, что вы хотите.