Benzer bir sorunum vardı, ama kendimi GUI araçlarıyla köşeye sıkıştırmıştım.
İçinde birkaç dosya ile bir alt proje vardı, ben şimdiye kadar sadece kendi git repo kontrol yerine etrafında kopyalanmış vardı. Ben alt klasörde bir repo yarattı, taahhüt, itme, vb gayet iyi başardı. Ancak ana depoda alt klasör bir alt modül olarak ele alınmadı ve dosyaları ana kopya tarafından hala izleniyordu - iyi değil.
Bu karışıklıktan kurtulmak için Git'e alt klasörü izlemeyi bırakmasını söylemeliydim (dosyaları silmeden):
proj> git rm -r --cached ./ui/jslib
Sonra orada bir alt modül olduğunu söylemek zorunda kaldım (şu anda git tarafından izlenen bir şey varsa yapamazsınız):
proj> git submodule add ./ui/jslib
Güncelleme
Bunu ele almanın ideal yolu birkaç adım daha içerir. İdeal olarak, mevcut repo kendi dizinine taşınır, herhangi bir üst git modülü içermez, işlenir ve aktarılır ve ardından aşağıdaki gibi bir alt modül olarak eklenir:
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
Bu, git repo'yu bir alt modül olarak klonlayacaktır - bu, standart klonlama adımlarını içerir, aynı zamanda git'in sizin için bu alt modülün çalışmasını sağlamak için aldığı diğer daha belirsiz yapılandırma adımlarını da içerir. En önemli fark, gerçek git dir'nin yaşadığı yere bir yol referansı içeren bir .git dizini yerine basit bir .git dosyası yerleştirmesidir - genellikle üst proje kökü .git / modules / jslib'de.
Bir şeyleri bu şekilde yapmazsanız, sizin için iyi çalışırlar, ancak ebeveyninizi taahhüt edip ittikten hemen sonra ve başka bir geliştirici bu ebeveyni çekmeye başlarsa, hayatlarını çok daha zorlaştırdınız. Kendi .git dizinini içeren bir dizin alt klasöründe tam bir .git dizininiz olduğu sürece, makinenizdeki yapıyı çoğaltmaları çok zor olacaktır.
Yani, taşımak, itmek, git add submodule, en temiz seçenektir.