Você pode usar uma combinação serial git rebase
e git branch
aplicar um grupo de confirmações em outra ramificação. Como já postado por wolfc, o primeiro comando realmente copia os commits. No entanto, a alteração não estará visível até você adicionar um nome de filial à confirmação mais importante do grupo.
Por favor, abra a imagem em uma nova aba ...
Para resumir os comandos no formato de texto:
- Abrir gitk como um processo independente usando o comando:
gitk --all &
.
- Corra
git rebase --onto a b f
.
- Imprensa F5em gitk . Nada muda. Mas não
HEAD
está marcado.
- Corre
git branch selection
- Imprensa F5em gitk . A nova ramificação com suas confirmações é exibida.
Isso deve esclarecer as coisas:
- Confirmar
a
é o novo destino raiz do grupo.
- Confirmar
b
é o commit antes do primeiro commit do grupo (exclusivo).
- Confirmar
f
é o último commit do grupo (inclusive).
Depois, você pode usar git checkout feature && git reset --hard b
para excluir as confirmações c
até f
do feature
ramo.
Além desta resposta, escrevi uma postagem no blog que descreve os comandos em outro cenário que deve ajudar a usá-lo geralmente.
b
basear-sef
mais tarde, mas que não tem nada a ver com o cherry-picking.)