subtree vs submodule
- Git kursu
- Uzman
- Ders 15/32
- 4 dk
subtree ile submodule arasındaki farkı öğrenirsin.
Subtree nedir?
Git subtree, başka bir deponun içeriğini mevcut deponun belirli bir alt dizinine dahil etmeyi sağlar. Eklenen projenin dosyaları ana deponun normal dosyaları gibi görünür ve ana deponun geçmişinde yönetilir.
git subtree add --prefix=libs/tool \
https://example.com/tool.git mainSubtree yaklaşımında bağımlı projenin içeriği ana deponun parçası haline gelir.
Subtree ve submodule karşılaştırması
Submodule, başka bir depoyu ayrı bir Git deposu olarak ana deponun içine bağlar ve belirli bir commit referansını kaydeder. Subtree ise diğer deponun dosyalarını ana deponun alt dizinine ekler.
# Submodule
git submodule add https://example.com/lib.git libs/lib
# Subtree
git subtree add --prefix=libs/tool \
https://example.com/tool.git mainSubmodule bağımsız depo yapısını korur. Subtree ise içerikleri ana depo içinde doğrudan yönetmeyi kolaylaştırır.
Uygulama Subtree ekleme komutunu yaz
https://example.com/shared.git adresindeki deponun main dalını ana depodaki vendor/shared dizinine ekle. Bunun için git subtree add komutunu ve --prefix parametresini kullan.
Başlangıç kodu
# Subtree deposunu hedef dizine ekleÖrnek çözüm
git subtree add --prefix=vendor/shared https://example.com/shared.git main
echo 'Subtree eklendi: vendor/shared'Beklenen çıktı
Subtree eklendi: vendor/shared
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir kütüphanenin dosyalarını ana deponun normal dosyaları gibi yönetmek istiyorsun. Hangi yaklaşım uygundur?
- Sparse-checkout
- Git worktree
- Git submodule
- Git subtree Doğru cevap
Açıklama: Subtree, başka bir deponun içeriğini ana deponun alt dizinine dahil eder ve dosyaları ana deponun geçmişinde yönetir.
2 Subtree dizinini belirt
git subtree add --prefix=____ https://example.com/tool.git main
git subtree add --prefix=libs/tool https://example.com/tool.git main
Açıklama: <code>--prefix</code> parametresi, diğer deponun içeriklerinin ana depoda hangi dizine ekleneceğini belirtir.
3 Subtree ve submodule özellikleri
| Kavram | Anlamı |
|---|---|
Subtree |
Dosyaları ana depoya dahil eder |
Submodule |
Ayrı depo referansı tutar |
--prefix |
Hedef dizini belirtir |
Commit referansı |
Submodule sürümünü işaret eder |