Je travaille actuellement pour une entreprise qui utilise VSTS pour gérer le code git. La méthode "recommandée" de Microsoft pour fusionner une branche consiste à effectuer une "fusion de squash", ce qui signifie que toutes les validations pour cette branche sont écrasées dans une nouvelle validation incorporant toutes les modifications.
Le problème est, que se passe-t-il si je fais des changements dans une branche pour un élément de backlog, puis que je veux immédiatement commencer à faire des changements dans une autre branche pour un autre élément de backlog, et ces changements dépendent du jeu de changements de la première branche?
Je peux créer une branche pour cet élément de backlog et la baser sur la première branche. Jusqu'ici tout va bien. Cependant, quand vient le temps de créer une demande de tirage pour moi, la deuxième branche, la première branche a déjà été fusionnée dans master et parce que cela a été fait comme une fusion de squash, git signale un tas de conflits. C'est parce que git ne voit pas les validations d'origine sur lesquelles la deuxième branche était basée, il voit juste la fusion d'un seul gros squash et donc afin de fusionner la deuxième branche pour la maîtriser, il essaie de rejouer toutes les validations de la première branche dans sommet de la fusion de squash, provoquant de nombreux conflits.
Donc ma question est, existe-t-il un moyen de contourner cela (autre que de ne jamais baser une branche de fonctionnalité sur une autre, ce qui limite mon flux de travail) ou la fusion de squash brise-t-elle simplement l'algorithme de fusion de git?
feature1
sur le maître, puis souhaitez fusionnerfeature2
plus tard. Dans ce cas, la première approche n'entraînerait-elle pas de conflits alors que git essaie defeature1
réappliquer les validations au-dessus de la validation écrasée, tandis que la seconde permettrait à git de déterminer que ces validations n'ont pas besoin d'être fusionnées?