Ответ 1
Вы можете сделать это с помощью cherry-pick
. Если ваша история long_branch
выглядит так:
A-B <-- master
\
C-D-E-F-G-H <-- long_branch
и вы хотите переместить содержимое, скажем, F через H, в другую ветвь, скажем, short_branch
, которая основана на master
:
git checkout master -b short_branch
который дает
A-B <-- master, short_branch
\
C-D-E-F-G-H <-- long_branch
then... (обратите внимание, что диапазон фиксации E..H
, левая сторона не включена для диапазона)
git cherry-pick E..H
который дает:
F'-G'-H' <-- short_branch
/
A-B <-- master
\
C-D-E-F-G-H <-- long_branch
Обратите внимание, что я имею в виду новые коммиты как F'
, G'
, H'
- это потому, что, пока они будут содержать те же эффективные изменения, что и F
, G
и H
, они не будут действительными одними и теми же фиксациями (из-за разных родителей + время фиксации).