Attualmente sto lavorando per un'azienda che utilizza VSTS per la gestione del codice git. Il modo "consigliato" di Microsoft di unire un ramo è quello di fare una "fusione squash", il che significa che tutti i commit per quel ramo vengono schiacciati in un nuovo commit che incorpora tutte le modifiche.
Il problema è che cosa succede se eseguo alcune modifiche in un ramo per un elemento di backlog, quindi voglio immediatamente iniziare a fare cambiamenti in un altro ramo per un altro elemento di backlog e tali cambiamenti dipendono dal set di modifiche del primo ramo?
Posso creare un ramo per quell'elemento arretrato e basarlo sul primo ramo. Fin qui tutto bene. Tuttavia, quando arriva il momento di creare una richiesta pull per me secondo ramo, il primo ramo è già stato unito in master e poiché è stato fatto come fusione di squash, git segnala un sacco di conflitti. Questo perché git non vede i commit originali su cui era basato il secondo ramo, vede solo l'unione di una grande squash e quindi, per unire il secondo ramo in master, cerca di riprodurre tutti i commit del primo ramo in la parte superiore della zucca si unisce, causando molti conflitti.
Quindi la mia domanda è: c'è un modo per aggirare questo (oltre a non basare mai un ramo di una funzione su un altro, il che limita il mio flusso di lavoro) o l'unione di squash rompe solo l'algoritmo di fusione di git?
feature1
a squash in master, quindi vuoi unirti infeature2
seguito. In tal caso, il primo approccio non comporterebbe conflitti poiché git tenta di riapplicare ifeature1
commit in cima al commit schiacciato, mentre il secondo consentirebbe a git di determinare che tali commit non devono essere uniti?