Birkaç alt modüle başvuran bir git süper projem var ve proje üyelerimin geri kalanı için bir iş akışını kilitlemeye çalışıyorum.
Bu soru için, süper projemin çağrıldığını superyve alt modülün çağrıldığını varsayalım subby. (O zaman yapmaya çalıştığım şeyin bir basitleştirmesidir ... Aslında dalları sürümler için kullanmıyorum, ancak soru olarak ortaya koymanın en kolay olacağını düşündüm.)
Ana dalım, alt modül olarak başvurulan git projesinin superyetiketine v1.0sahip subby. Dalı superyolarak adlandırılan one.oneve etikete noktasına altmodülün referansını değiştirdi v1.1arasında subby.
Bu şubelerin her birinde sorunsuz çalışabilirim, ancak one.oneşubeyi şubeden değişikliklerle güncellemeye çalışırsam masterbazı çatışmalar alıyorum ve bunları nasıl çözeceğimi bilmiyorum.
Temelde dalda bir git pull . mastersüre çalıştıktan sonra subby, ek alt modüller yaratıyor gibi görünüyor.
Çekme / birleştirme önce, istenen yanıt almak git submoduleden one.onedalı:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
Ancak çekmeden sonra, çalıştırdığımda ek alt modüller ekliyor git submodule:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
İstenmeyen alt modül referanslarını nasıl silerim / yok sayarım ve çakışmalarımı ve değişikliklerimi nasıl gerçekleştiririm? Veya orijinalimle kullanabileceğim, git pullalt modüllerimi yok sayacak bir parametre var mı?