Reutilizando um ramo mesclado, boas práticas?

36

Atualmente, eu costumava criar uma nova ramificação cada vez que adicionava um novo recurso ao meu aplicativo.

Quando meu recurso está pronto e funcional, mesclo-o ao ramo principal.

Mais tarde, porém, quando preciso atualizar esse recurso (como uma melhoria), é melhor criar uma nova ramificação ou preciso refazer a anterior com o mestre, a atualização será mesclada novamente?

Por exemplo, eu tenho um ramo chamado model-member em um aplicativo Ruby on Rails. Mais tarde, preciso adicionar alguns atributos ao modelo de membro (que foi criado neste ramo). O que devo fazer? Rebase deste ramo com o mestre, atualize o modelo e mescle-o novamente ou simplesmente crie um novo ramo?

gaetanm
fonte
11
Se o seu projeto for muito grande, a reutilização de ramificações antigas consumirá muito tempo para o git alternar e / ou atualizar. Comparado aos poucos segundos necessários para criar uma nova ramificação.
Reactgular

Respostas:

34

Crie uma nova ramificação, porque:

  • É menos provável que uma ramificação totalmente nova tenha conflitos de mesclagem quando terminar e deseja mesclá-la no mestre. Poucas coisas são mais propensas a erros do que corrigir conflitos de mesclagem.

  • O recurso pode ter passado por várias alterações e atualizações desde sua implementação original, tornando o ramo original totalmente obsoleto. A única maneira de atualizá-lo é mesclar o mestre no ramo de recursos ... e nesse ponto você está apenas ramificando o mestre de uma maneira desnecessariamente complicada.

  • Se apenas por uma questão de simplicidade, geralmente é uma boa ideia ter o mesmo fluxo de trabalho para atualizações, correções de bugs e novos recursos. Isso se aplica a ramificações, revisões de código, uso de rastreador de erros e praticamente todo o resto. A diferença entre atualizar um recurso existente, adicionar um novo recurso e corrigir um erro geralmente é subjetiva de qualquer maneira.

Ixrec
fonte
7

Use uma nova ramificação.

Para nomear, você pode considerar usar um formato interno que this_work seja uma extensão ou mude para that_work

Por exemplo, você pode nomear o segundo ramo

modeling-member--attributes

com - sinalizando que o nome à esquerda é o ramo original

Enfrentamos um problema um pouco semelhante ao usar os números de ticket Jira para nomes de filiais. Às vezes, há um trabalho adicional para o mesmo ticket. Às vezes, uma alteração no banco de dados não pode ser revertida. Nesses casos, usamos, por exemplo, o ramo original SEND-123 e o segundo ramo como SEND-123a

Michael Durrant
fonte
0

Se você quiser salvar apenas confirmações de uma mesclagem no master e estiver usando o github, poderá usar "Fork" para cada novo recurso, fazer uma solicitação de recebimento e aceitar solicitação de recebimento após concluir cada novo recurso.

Não recomendo trabalhar em ramos antigos, pois você pode ter conflitos quando o mescla com o chefe de mestre e, claro, não é necessário fazê-lo ...

Danilo Pereira De Luca
fonte
4
"u" não é uma palavra em inglês. Essa fala em texto deve ser reservada para textos e twitter.
Gort the Robot
@Steven Agora, mesmo lá, quando para (a maioria das pessoas) cada letra não precisar mais de três ou quatro pressionamentos de tecla, deve ser evitada. :)
TZHX