Вы можете использовать последовательную комбинацию git rebase
и, git branch
чтобы применить группу коммитов к другой ветви. Как уже сообщал wolfc, первая команда фактически копирует коммиты. Тем не менее, изменение не будет видно, пока вы не добавите имя ветви в самый верхний коммит группы.
Пожалуйста, откройте картинку в новой вкладке ...
Чтобы суммировать команды в текстовом виде:
- Открытый gitk как самостоятельный процесс , с помощью команды:
gitk --all &
.
- Беги
git rebase --onto a b f
.
- Нажмите F5в гитке . Ничего не меняется Но не
HEAD
отмечен.
- Запустить
git branch selection
- Нажмите F5в Gitk . Появляется новая ветка с ее коммитами.
Это должно прояснить вещи:
- Фиксация
a
- это новое корневое назначение группы.
- Фиксация
b
- это фиксация перед первым коммитом группы (эксклюзив).
- Фиксация
f
является последним коммитом группы (включительно).
После этого вы можете использовать git checkout feature && git reset --hard b
для удаления коммитов c
до f
из feature
ветви.
В дополнение к этому ответу я написал сообщение в блоге, в котором описываются команды в другом сценарии, которые должны помочь в общем его использовании.
b
основыватьсяf
позже, но это не имеет ничего общего с сбором вишни.)