CodeBlanks Logo Icon CodeBlanks

subtree vs submodule

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 main

Subtree 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 main

Submodule 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

terminal
# Subtree deposunu hedef dizine ekle

Örnek çözüm

terminal
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

Soru
git subtree add --prefix=____ https://example.com/tool.git main
Cevap
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

Uzman bölümündeki tüm dersler