Obecnie pracuję dla firmy, która używa VSTS do zarządzania kodem git. „Zalecanym” sposobem scalania oddziału przez Microsoft jest „scalenie squasha”, co oznacza, że wszystkie zatwierdzenia dla tego oddziału zostają zgniecione w jednym nowym zatwierdzeniu zawierającym wszystkie zmiany.
Problem polega na tym, że jeśli zrobię jakieś zmiany w jednej gałęzi dla jednego elementu zaległości, to od razu chcę zacząć robić zmiany w innej gałęzi dla innego elementu zaległości, a zmiany te zależą od zestawu zmian pierwszego oddziału?
Mogę utworzyć gałąź dla tego elementu zaległości i oprzeć ją na pierwszej gałęzi. Jak na razie dobrze. Jednak, gdy nadchodzi czas, aby utworzyć żądanie ściągnięcia dla mnie drugiej gałęzi, pierwsza gałąź została już scalona w master, a ponieważ została wykonana jako scalenie squasha, git oznacza kilka konfliktów. Dzieje się tak, ponieważ git nie widzi oryginalnych zatwierdzeń, na podstawie których powstała druga gałąź, po prostu widzi jedno duże scalenie squasha, więc aby połączyć drugą gałąź w celu opanowania, próbuje odtworzyć wszystkie zatwierdzenia pierwszej gałęzi w top squash scala, powodując wiele konfliktów.
Więc moje pytanie brzmi: czy jest jakiś sposób na obejście tego (oprócz tego, że nigdy nie opieram jednej gałęzi funkcji na innej, co ogranicza mój przepływ pracy), czy też łączenie squash'a po prostu łamie algorytm scalania gita?
feature1mistrzem, a następnie zechcesz połączyćfeature2później. W takim przypadku, czy pierwsze podejście nie doprowadziłoby do konfliktów, ponieważ git próbuje ponownie zastosowaćfeature1zatwierdzenia na zgniecionym zatwierdzeniu, podczas gdy drugie pozwoliłoby gitowi ustalić, że te zatwierdzenia nie muszą być scalane?