Atualmente, estou trabalhando para uma empresa que usa o VSTS para gerenciar código git. A maneira "recomendada" da Microsoft de mesclar uma ramificação é fazer uma "mesclagem de squash", o que significa que todas as confirmações dessa ramificação são comprimidas em uma nova confirmação incorporando todas as alterações.
O problema é que, se eu fizer algumas alterações em uma ramificação para um item da lista de pendências, imediatamente quiser começar a fazer alterações em outra ramificação para outro item da lista de pendências, e essas alterações dependem do conjunto de alterações da primeira ramificação?
Posso criar uma ramificação para esse item da lista de pendências e baseá-la na primeira ramificação. Por enquanto, tudo bem. No entanto, quando chega a hora de criar uma solicitação de recebimento para o segundo ramo, o primeiro ramo já foi mesclado no mestre e, como foi feito como uma mescla de squash, o git sinaliza vários conflitos. Isso ocorre porque o git não vê os commits originais dos quais o segundo ramo foi baseado, apenas vê uma grande mistura de squash e, portanto, para mesclar o segundo branch para dominar, ele tenta reproduzir todos os commits do primeiro branch em mesclagem no topo da squash, causando muitos conflitos.
Portanto, minha pergunta é: existe alguma maneira de contornar isso (além de nunca basear uma ramificação de recurso em outra, o que limita meu fluxo de trabalho) ou a mesclagem de squash apenas quebra o algoritmo de mesclagem do git?
feature1
no mestre e depois mesclarfeature2
mais tarde. Nesse caso, a primeira abordagem não resultaria em conflitos, já que o git tenta reaplicar osfeature1
commits no topo do commit squashed, enquanto o segundo permitiria ao git determinar que esses commits não precisam ser mesclados?