Üzerinde çalıştığım şu anki proje, genellikle bir grup özellik dalı olarak kendini gösteren bir dizi farklı fikri keşfetmeye çalışıyorum. Üzerinde çalıştığım özellikler genellikle birbirine ortogonaldir, bu yüzden tüm bu özellikleri (veya özelliklerin bazı alt kümelerini) birleştirmek ve bunları birlikte test etmek istediğim zamanlar vardır.
Şimdiye kadar iş akışım buydu - şubelerim var
featureA,
featureB,
featureC ve bir şube alacağım
featureA_featureB ve sonra başka biri gibi
featureA_featureB_featureC, vb.
2 problem yaşıyorum:
- Adlandırma şeması son derece hantal ve çok fazla dağınıklık yaratıyor
- Şubeyi bir araya getirilen özellikler ile test ettiğim için, tek tek şubeden ziyade birleşim dalına bağlı kalma eğilimindeyim. Yani örneğin, bir iyileştirme düşünüyorum
featureCama bende olduğum için
featureA_featureC şube, ben yanlışlıkla bu şubeye taahhüt ediyorum (gerçekten kullanmayı bırakmam gerek
git commit -a). Öyleyse taahhüdünü yerine getirmem ya da doğru yere iştirak etmek için başka çılgın şeyler yapmam gerekiyor.
- Bunu başarmanın daha iyi bir yolu varmış gibi hissediyorum.
Şimdiden teşekkürler!
Kendi başıma bir cevap yazacaktım ama sonra bunu buldum. mükemmel cevap (ve harika bir soru). Size bir şeyler yapmanın tek bir yolunu vermez, ama dikkatli bir okuma üzerine, durumunuza uyan bir iş akışı bulabilmeniz gerekir.
Tüm özellik dallarımın ayrılacağı, örneğin "geliştir" gibi ortak bir paydaya sahip olurdum.
develop
|----featureA
|----featureB
|----featureC
Sonra bir şeyleri test etmek istediğinizde, sadece özellik dallarından istediğiniz gibi birleşik olarak geliştirin, örn.
git checkout develop
git merge featureA featureB
./test.sh
Ve testten memnun kalırsanız, sözünü tut. Yapmazsan
git reset --hard HEAD^
ve sen birleştirme yapmadan önce nasıl olduğunu geliştirmeye geri döndün. Bu sayede sadece özellik dallarına ihtiyacınız vardır ve bunları herhangi bir kombinasyonda deneyebilirsiniz. Sadece bir şey yaptığınız sürece, reflo'yu kontrol ederek HER ZAMAN bu duruma geri dönebileceğinizi unutmayın.
Ve senin için
git commit -a problems, yap
git reset --soft HEAD^
ve endekse, bu işlemi yapmadan hemen önce olduğu gibi. Daha sonra başka bir şubeye geçin ve yerine koy.
Git'te, çeşitli yollar vardır değişiklikleri bir şubeden diğerine entegre etmek: Birleştirme dallarını, Şubeleri yeniden düzenleyin ya da bir şubeden diğerine ayrı ayrı başvuruları uygulayın (kiraz toplama).