Soru Git Disiplin: Birden fazla özellik dalını birleştirmek, ancak yine de onları ayrı tutmak mı?


Ü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!


22
2018-02-22 18:21


Menşei


3 problem;) Aksi halde, mükemmel bir soru. - user1284631
@axeoth - haha, touche - Sanırım üçüncü olan gerçek bir problem değil - gerçekten bir mermi noktası olmamalı. - KarateSnowMachine


Cevaplar:


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.


7
2018-02-22 18:48



Tekerleği yeniden icat etmek için +1. - Abizern
@MarcinZalewski: hangi cevaptan bahsediyorsun? - Andrew Mao


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.


3
2018-04-26 22:13



Sadece kullanmak istediğinizden emin olmak istediğinizi eklemek istiyorum. git merge --no-ff featureA featureB hızlı ileriye doğru gidebileceğinizden emin olmak için. - KarateSnowMachine


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).


0
2018-03-01 09:49