Fluxo do Git - criar um branch de recurso de outro branch de recurso

85

Eu tenho usado git flowpor um tempo agora. Estou curioso para aprender sobre um caso de uso específico.

Para um dos meus projetos, tenho um ingresso para um novo recurso do site. Este tíquete depende de muitas subtarefas. Gostaria de criar uma ramificação de recurso para o ticket principal e, em seguida, para cada subtarefa, criar uma ramificação de recurso fora da ramificação de recurso pai.

Vamos supor que eu tenha um tíquete PROJ-500 e crie um branch de recursos para ele

git flow feature start PROJ-500

Então eu quero integrar bilhetes PROJ-501através PROJ-515em PROJ-500antes de integrar a coisa toda em develop. Existe uma maneira de eu fazer algo como

git flow feature start PROJ-511 -b PROJ-500

Então, com o tempo, essas subtarefas são concluídas e, quando seu recurso é concluído, a ramificação é mesclada com PROJ-500.

git flow feature finish PROJ-511

O comando acima se fundiria PROJ-511emPROJ-500

E quando todas as subtarefas estiverem concluídas, PROJ-500elas serão concluídas e mescladas com develop.

Desta forma, o novo recurso do site é integrado ao desenvolvimento como uma unidade única, em vez de aos poucos.

pymarco
fonte
Isso não funciona? git flow feature start PROJ-511 PROJ-500? O link que você postou no comentário à resposta de DerekS sugere que sim.
Paul Hicks

Respostas:

119

Você pode criar um ramo de sub-recurso via

git flow feature start PROJ-511 feature/PROJ-500

Mas você não pode usar a ferramenta GitFlow para mesclar a ramificação de volta na ramificação do recurso principal, porque se você fizer

git flow feature finish PROJ-511

o recurso será mesclado com develop. Sub-recursos Ergo não são suportados , você precisa fazer isso manualmente.

Alternativas: o requisito não é novo, no entanto. Há um problema aberto , bem como um projeto de bifurcação que afirma oferecer suporte a recursos de acabamento em outras ramificações develop. Eu também encontrei uma solicitação de pull com uma implementação desse recurso. Você pode querer experimentar essa modificação e ver se está satisfeito com ela.


Atualização de 13/12/2019: como o usuário Matěj Kříž acabou de mencionar em seu comentário, o usuário Tony Chemit escreveu uma resposta aqui alguns meses depois da minha, apontando para gitflow-avh como uma alternativa ao produto gitflow original. Ele oferece suporte a sub-recursos prontos para uso com a sintaxe mostrada acima. Alguns anos se passaram e hoje em dia a edição AVH faz parte da instalação normal do Git para Windows, acabei de verificar isso na minha caixa local e testei a opção de sub-recurso. Ou seja, para usuários do Windows, ele funciona logo após a instalação do Git.

Kriegaex
fonte
1
@pymarco: Obrigado por aceitar a resposta. Estou curioso: você já tentou alguma das alternativas? Em caso afirmativo, qual e qual foi o resultado? Funciona como esperado? Talvez outros leitores possam aprender algo com sua experiência. :-)
kriegaex
Desculpe, mas não tive tempo de voltar a este assunto. Vou tentar em algum momento.
pymarco
3
Por que o downvote? Os votos negativos devem ser usados ​​para respostas mal escritas e desleixadas que não mostram nenhum sinal de esforço de pesquisa ou conhecimento. Enfim, obrigado.
kriegaex
Se você usar a versão gitflow-avh, procure mais abaixo em stackoverflow.com/a/29353800/472611 @ tony-chemit answer
Matěj Kříž
12

Como já mencionado, podemos iniciar um novo recurso usando qualquer ramificação base com

git flow feature start PROJ-511 feature/PROJ-500

E para finalizar o sub-recurso, podemos alterar temporariamente a configuração do fluxo git para usar nosso branch de recursos em vez de develop:

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511

Dessa forma, o git flow executa todos os comandos e verificações de integridade. Finalmente, para restaurar a configuração, podemos executar

git flow config set develop develop 
César
fonte
9

Atualização (5 de novembro de 2020): conforme observado na resposta mais recente aqui , isso é possível com gitflow-avh, que substituiu o fluxo git original.

=====================

Resposta Original:

Não acho que exista um método para isso no fluxo git, mas é bastante simples apenas com git.

git checkout PROJ-500
git checkout -b PROJ-511
...do your PROJ-511 work...
git checkout PROJ-500
git merge PROJ-511
git branch -d PROJ-511
Derek S
fonte
2
Obrigado Derek por responder. Sim, eu poderia seguir esse fluxo de trabalho. Mas o git flow encapsula uma série de comandos e verificações de integridade que prefiro utilizar para o desenvolvimento de sub-recursos. Por exemplo, aqui está um link para git-flow-feature - github.com/nvie/gitflow/blob/develop/git-flow-feature
pymarco