Existe uma maneira de rebase um único commit de um branch para outro branch?
Eu tenho esta estrutura de ramificação:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
Tudo que eu quero fazer é realocar o último commit de Feature-branch
no master e reverter Feature-branch
um commit.
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
Como faço isso?
Respostas:
Você pode escolher XX para dominar.
E remova o último commit do branch de recursos com git reset.
fonte
cherry-pick
fez parecer como se tivessem sido excluídos do local antigo e criados no novo local. Suponho que o rebase teria resolvido isso, mas agora eu já fiz push upstream, então não posso testar isso. Em qualquer caso, tome cuidado se você tiver uma situação semelhante.Feature-branch
a origem, você precisará,git push -f origin Feature-branch
poisFeature-branch
agora é considerado 1 commit atrás doorigin/Feature-branch
.Isso diz "realocar o intervalo de commits entre o último antes do branch e o branch (ou seja, o commit XX) na ponta do branch master"
Após esta operação, a
branch
dica é movida para o commitXX
, então você deseja defini-la de volta comQue diz "redefina a ponta do branch para o commit antes de seu estado anterior"
Portanto, uma escolha certa é uma solução mais simples ...
fonte
--onto
antes, então posso estar fazendo algo errado. BTW, o OP disse rebase, mas parece que ele quer fazer uma escolha certa.Na verdade, é muito simples de fazer. A solução é fazer um rebase interativo e "descartar" todos os commits que você não deseja incluir no rebase.
git rebase -i <target_branch>
ondetarget_branch
está o branch para o qual você deseja realocarEntão você irá editar o arquivo que é aberto e
pick
os commits que você quer edrop
(oud
para encurtar) todos os commits que você não quer trazer.fonte
A resposta de @Charles está correta. De qualquer forma, acabei usando isso tantas vezes, principalmente para realocar configurações específicas em um projeto
que eu crio um novo comando para ele:
normalmente você deseja preencher automaticamente os nomes dos ramos para esse comando, então adicione-o fornecendo esta função (adicionando a .bashrc ou .profile):
git autocomplete irá procurar por ele
você pode usar este comando assim:
Quando você divide os recursos corretamente, as possibilidades são infinitas.
Eu acho que isso é o que quilt pessoas gostam de fazer.
este comando funcionará de qualquer maneira com qualquer sha / ref que você fornecer:
fonte
Aqui está outra opção:
Os comandos se parecem com:
Não é um comando de rebase, mas é um rebase em espírito.
fonte