Размещение последних коммитов в отдельной (именованной) ветке в Mercurial (Hg) - PullRequest
4 голосов
/ 05 мая 2011

Если с момента последнего нажатия на ветку по умолчанию было сделано несколько коммитов, можно ли вернуться назад и переместить эти коммиты в отдельную именованную ветвь?

То есть у меня есть:

A--B--C--D

и я хочу:

A
 \
  B--C--D

Надеюсь, это имеет смысл?

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Взгляните на расширение Transplant .

Но лично я бы сделал это, используя MQ, вот так:

# assuming revs 1 and 2 are the ones we want to move
hg qimport -r1:2

# qimport creates a patch for each changeset
>hg qapplied
1.diff
2.diff

# pop the patches, to save for later
>hg qpop -a
popping 2.diff
popping 1.diff
patch queue now empty

# switch branches
>hg branch my-branch
marked working directory as branch my-branch

# push our saved changesets, essentially rebasing on the new branch
>hg qpush -a
applying 1.diff
applying 2.diff
now at: 2.diff

# make the patches part of permanent history
>hg qfin -a

Возможно, вы также можетеесли хотите, согните расширение Rebase для этой цели.

2 голосов
/ 05 мая 2011

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

Для перестановки коммитов вы хотите использовать расширение MQ . Вот учебник , поскольку он объясняет вещи лучше, чем я мог бы здесь.

...