Mover as modificações feitas no desenvolver do ramo em um novo git-fluxo ramo de funcionalidade?
Pergunta
Eu estou usando o git-fluxo para os meus projetos, e ter iniciado um pouco complicado conjunto de alterações no desenvolver do ramo, que parecem levar mais tempo do que eu esperava que o primeiro.
Eu gostaria de ter feito isso em um ramo de funcionalidade, desde que eu gostaria de fazer uma nova versão com outras alterações.Como posso mover estas alterações não confirmadas em um novo git-fluxo ramo de funcionalidade?
Solução
Se você já fez nenhuma compromete-se
Se você simplesmente tem um sujo cópia de trabalho, basta agir como você está prestes a iniciar uma nova funcionalidade:
git flow feature start awesomeness
git commit -va
Se você fiz fazer algumas compromete-se
Se há compromete-se em desenvolver o que deveria ter sido no seu ramo de funcionalidade, os passos acima são os mesmos.Além de que você vai (possivelmente, isso não é necessário) deseja redefinir sua desenvolver ramo de volta para onde estava antes de você começar a confirmar as alterações para o seu ramo de funcionalidade, o que você pode fazer com:
git flow feature start awesomeness
git commit -va
git checkout develop
git reset origin/develop --hard
Outras dicas
Aqui está uma maneira de fazê-lo:
git checkout where-you-should-have-made-your-feature-branch
git branch feature-branch
git checkout feature-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in chronological order
git cherry-pick commit
Agora depende se você já empurrou seu ramo para desenvolver um repositório público ou não.Se tudo ainda é privado, e você quer reescrever a história:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git rebase --onto commit~1 commit develop-branch
Se você não quer reescrever a história:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git revert commit
E que deve fazê-lo.