Burada birkaç probleminiz var gibi görünüyor:
1. Belirli bir sürümün özelliklerini belirleme
Bu bir proje yönetimi meselesi ve bir koordinasyon meselesidir. Will bu özellik aynı zamanda, daha önce yayımlanan veya bundan sonra edilecek diğer özelliği? Sürümler bir seferde bir özellik olmak istiyorsa bunu tanımlayın. Özellikler sürümler halinde gruplanacaksa, gruplamaların ne olduğunu anlayın ve geliştiriciler ve karar vericiler ile uygulayın. Sürümleri etiketlemek için sorun izleme veya biletleme sisteminizi kullanın. Belirli bir sürümün bir özelliği hareketsizse, o zaman hepsinin olduğunu açıkça belirtin.
2. Dallanma stratejileri
Git-flow bu gibi sorunların kolay cevabıdır ve insanlar ne olduğunu bilmeseler bile çoğu kez git-flow değişkenini kullanırlar. Bunun tüm problemler için her şeyi yakalayacağını söylemeyeceğim, ama çok yardımcı oluyor.
Belirleyici olmayan yayın stratejileriyle ilgili bir sorunla karşılaştığınız anlaşılıyor, burada özellikler onaylanmış dağıtımdır ve uzun zaman önce geliştirmeye başlayan bir şey, daha yakın zamanda başlayan bir şeyden sonra sıçrayan kurbağa özellikleri olabilir.
Uzun ömürlü özellik dalları veya eşzamanlı serbest bırakma dalları muhtemelen bu tür sorunlar için en iyi yanıttır. Ustadan en son uzun süredir çalışan dallarınızda birleştirin (veya rahatsanız, yeniden doğuş) . Yalnızca halihazırda canlı olan özellikleri birleştirmeye dikkat edin , aksi takdirde şu anda yaşadığınız sorunlarla karşılaşırsınız (bir dalda çok fazla karma özellik).
"Düzeltme" veya "hata düzeltme" dalları bu işlemin önemli bir parçasıdır; bunları kısa bir KG döngüsü olan küçük bir kerelik düzeltmeler için kullanın.
Senin açıklamadan, hatta daha iyi olabilir değil bir resmi 'gelişme' dalını korumak. Aksine, tüm özellikleri master'dan ayırın ve bir sürüm tanımlandıktan sonra birleştirilmiş sürüm dalları oluşturun.
3. Ortamlar
Git = şubeleri ortamınızla eşleştirmeyin, üretim == master hariç. 'Geliştirme' dalı kırılmış sayılmalıdır. Serbest bırakma dalları, QA ortamı veya aşamalı bir ortam olsun, ortamları test etmek için itilir. Gerekirse, belirli bir özellik dalını ortama itin.
Ayrı olarak serbest bırakılması gereken ancak aynı zamanda test edilmekte olan birden fazla özellik dalınız varsa ..... ¯ \ _ (ツ) _ / ¯ .... başka bir sunucuyu döndürüyor musunuz? Belki de onları bir atıcı dalda birleştirin ... orijinal dallarda düzeltmeler / değişiklikler yapın ve atıcı dalda yeniden birleşin; tek tek serbest bırakma dallarında nihai onay ve UAT yapabilir.
4. Onaylanmamış özellikleri bir şubeden kaldırma
Yukarıdaki düşünceler kaçınmaya çalışıyor, çünkü bu şüphesiz denemek ve yapmak için en acı verici şey. Şanslıysanız, özellikler birleştirme işlemlerini kullanarak geliştirme veya test dallarını atomik olarak birleştirmiştir. Şanssızsanız, geliştiriciler doğrudan geliştirme / test dalına kendini adamıştır.
Her iki durumda da, bir sürüm için hazırlanıyorsanız ve onaylanmamış değişiklikleriniz varsa, onaylanmamış taahhütleri sürüm dalından geri almak için Git'i kullanmanız gerekir ; en iyi fikir, sürümü test etmeden önce bunu yapmaktır .
İyi şanslar.