Git Submodule
Son güncelleme
Bir submodule, bir Git deposunu başka bir deponun içine belirli bir commit'e sabitlenmiş şekilde gömer. Üst repo, hangi submodule commit'ine bağlı olduğunu kaydeder, böylece herkes aynı sürümü alır. Kendi deposunda yaşayan paylaşılan bir kütüphaneyi veya bileşeni kodunu kopyalamadan dahil etmenin yoludur.
Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir shell, kurulacak hiçbir şey yok.
Söz dizimi
| Command | What it does |
|---|---|
git submodule add <url> libs/x | Bir repoyu libs/x konumunda submodule olarak ekle |
git clone --recurse-submodules <url> | Bir repoyu ve submodule'lerini klonla |
git submodule update --init --recursive | Düz klonlamadan sonra submodule'leri başlat ve çek |
git submodule update --remote | Submodule'leri en son commit'lerine güncelle |
git submodule status | Her submodule'ün commit'ini göster |
Yaygın durumlar
| Goal | Command |
|---|---|
| Submodule kullanan bir projeyi klonla | git clone --recurse-submodules <url> |
| Klonladıktan sonra submodule'leri çek | git submodule update --init --recursive |
| Bir submodule'ü en son sürümüne yükselt | git submodule update --remote |
git submodule SSS
git submodule nedir?
Bir submodule, başka bir Git deposunun içine sabit bir commit'te yerleştirilmiş bir Git deposudur. Üst repo, submodule'ün dosyaları yerine tam olarak o commit'e bir işaretçi saklar, böylece işbirlikçiler aynı sürümü checkout eder. Kendi deposu ve geçmişi olan bir bağımlılığı veya paylaşılan bir bileşeni dahil etmek için kullanılır.
Submodule'lü bir depoyu nasıl klonlarım?
Üst repoyu ve tüm submodule'lerini tek adımda klonlamak için
git clone --recurse-submodules <url> kullanın. O bayrak olmadan zaten klonladıysanız, submodule klasörlerini doldurmak için sonrasında git submodule update --init --recursive çalıştırın.Bir submodule'ü en son commit'e nasıl güncellerim?
Her submodule'ün izlenen dalını çeken ve onu en son commit'e taşıyan
git submodule update --remote komutunu çalıştırın. Ardından değişikliği üst repoda commit'leyin, çünkü üst repo hangi submodule commit'ine işaret ettiğini kaydeder - o işaretçiyi commit'leyene kadar güncelleme kaydedilmez.Klonladıktan sonra submodule klasörüm neden boş?
Çünkü
--recurse-submodules olmadan klonladınız, bu yüzden Git klasörleri oluşturdu ama içeriklerini çekmedi. Her submodule'ü başlatan ve indiren git submodule update --init --recursive ile düzeltin.Bunu çevrimiçi olarak alıştırma yapabilir miyim?
Evet. Tarayıcınızda gerçek bir shell'de
git submodule çalıştırmak için terminal playground'u açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da depo kurulumunu adım adım kapsar.