Şu anda git kodunu yönetmek için VSTS kullanan bir şirket için çalışıyorum. Microsoft'un bir şubeyi birleştirmenin "önerilen" yolu, bir "squash birleşmesi" yapmaktır, yani bu şubeye ilişkin tüm taahhütler, tüm değişiklikleri içeren yeni bir taahhütte ezilir.
Sorun, bir biriktirme öğesi için bir dalda bazı değişiklikler yaparsam, hemen başka bir biriktirme öğesi için başka bir dalda değişiklik yapmaya başlamak istiyor ve bu değişiklikler ilk dalın değişiklik kümesine bağlı mı?
Bu biriktirme listesi öğesi için bir şube oluşturabilir ve ilk dalı temel alabilirim. Çok uzak çok iyi. Ancak, ikinci şube benim için bir çekme isteği yaratmanın zamanı geldiğinde, ilk şube zaten ustaya birleştirildi ve squash birleştirme olarak yapıldığı için git, bir sürü çatışmayı işaretliyor. Bunun nedeni git, ikinci dalın dayandığı orijinal taahhütleri görmemesi, sadece bir büyük squash birleştirmesini görmesi ve böylece ikinci dalı birleştirmek için ilk dalın tüm taahhütlerini tekrar oynatmaya çalışmasıdır. Squash birleşmesinin tepesi, birçok çatışmaya neden oluyor.
Benim sorum şu, bunun üstesinden gelmenin herhangi bir yolu var mı (sadece bir özellik dalını diğerine dayandırmak dışında, iş akışımı sınırlıyor) veya squash birleştirme sadece git'in birleştirme algoritmasını kırıyor mu?
feature1
, daha sonra birleştirmek isterseniz ne olduğu ile başa çıkmaz gibi görünüyorfeature2
. Bu durumda, ilk yaklaşım gitfeature1
komutları ezilmiş taahhüdün üzerine yeniden uygulamaya çalıştığında çatışmalara yol açmazken, ikincisi git'in bu taahhütlerin birleştirilmesine gerek olmadığını belirlemesine izin verir mi?