Подтвердить что ты не робот

Как переместить некоторый набор изменений в новую ветвь в меркуриальном

Я хочу переместить набор изменений из одной ветки в другую. В принципе, у меня в настоящее время есть:

A -> B -> C -> D # default branch

И я хочу:

A # default branch
 \-> B -> C -> D # some_new_branch

Где some_new_branch еще не существует. Я привык к git, поэтому, я думаю, есть простой "меркуриальный" способ, который мне не хватает.

4b9b3361

Ответ 1

Один из способов - экспортировать патч для B, C, D; обновить до A; филиал; применить патч:

hg export -o patch B C D
hg update A
hg branch branchname
hg import patch

Чтобы удалить B, C, D из ветки по умолчанию, используйте команду mq extension strip.

Ответ 2

Звучит немного как операция вишневого захвата в git. Transplant Extension может быть тем, что вы ищете.

Ответ 3

С Mercurial Queue:

# mark revisions as draft in case they were already shared
#hg phase --draft --force B:D
# make changesets a patch queue commits
# (patches are stored .hg/patches)
hg qimport -r B:D
# pop changesets from current branch
hg qpop -a
# 
hg branch some_new_branch
# push changesets to new branch
hg qpush -a
# and make them commits
hg qfinish -a

Без комментариев:

hg qimport -r B:D
hg qpop -a
hg branch some_new_branch
hg qpush -a
hg qfinish -a

Ответ 4

Альтернатив трансплантации или патчу, вы можете использовать graft.

hg update A
hg branch branchname
hg graft -D "B:D"
hg strip B

Обратите внимание, что изменение истории - это плохая практика. Вы должны снимать, только если вы еще не нажали. В противном случае вы можете отменить свои изменения.