Я не совсем понимаю, хотите ли вы сквозировать C и D, создавая новую фиксацию C ', или хотите выкачать B, C и D, создавая новый commit B ', который сохранит исходную закладку.
Для первого:
hg rebase -s 'children(bookmark)' -d bookmark --collapse -m <msg>
Вы должны указать сообщение фиксации или с -m
или -l
вариант, или вы будете понижены в редактор.
Для второго:
hg rebase -s bookmark -d bookmark^ --collapse -m <msg>
Для revset указать все потомки пересмотра, за исключением пересмотра себя, используйте следующую revset:
children(bookmark)::
Заметим, что нелинейную историю на этом этапе могут возникнуть неожиданные результаты (в частности, использование children()
здесь предполагает только одну дочернюю ревизию).
Не забудьте включить расширение переадресации в вашем файле hgrc для этого.
> Обратите внимание, что нелинейная история на этом этапе может создать неожиданные результаты - Что вы подразумеваете под этим - это неопределенный? –
Это означает, что (1) разные команды могут иметь разные отношения с реверсами, которые имеют несколько изменений в голове или хвосте (2) вам может потребоваться (например) указать, как слить с rebase (используя '--tool') или (3) нужно подумать о том, как отфильтровать вывод 'hg export' на' hg import --no-commit'. Это зависит от того, что именно вы планируете делать. –