Bir alt modülün belirli bir sürümünü 'git submodule' kullanarak nasıl kontrol edebilirim?


Yanıtlar:


167

Alt modül depoları, belirli bir kaydetmeyi gösteren bağımsız bir HEAD durumunda kalır. Bu commit'i değiştirmek basitçe farklı bir tag veya commit'i kontrol etmeyi ve ardından değişikliği ana depoya eklemeyi içerir.

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status ana depoda şimdi kirli bir ağaç rapor edecek:

# On branch dev [...]
#
#   modified:   submodule (new commits)

Alt modül dizinini ekleyin ve yeni işaretçiyi depolamayı kesin.


14
Ana depoyu bir alt modülün belirli bir dalı / sürümü ile teslim ettikten sonra, diğerleri gelecekte alt modülün aynı sürümünü ödünç alabilir mi? Veya tekrar manuel olarak belirtmeleri mi gerekiyor?
QZHua

@QZHua: Bunu kendim denedim ve görünüşe göre alt modülün commit ID'si ebeveyn klonlandığında korunuyor.
Psychonaut

37

1. Adım: Alt modülü ekleyin

   git submodule add git://some_repository.git some_repository

Adım 2: Alt modülü belirli bir kaydetmeye göre düzeltin

Varsayılan olarak, yeni alt modül ana dalın HEAD'ini izliyor olacak, ancak birincil deponuzu güncellediğinizde güncellenmeyecektir. Alt modülü belirli bir kaydı veya farklı bir dalı izleyecek şekilde değiştirmek için, dizini alt modül klasörüne değiştirin ve normal bir depodaki gibi dalları değiştirin.

   git checkout -b some_branch origin/some_branch

Artık alt modül, HEAD of master yerine geliştirme dalında sabitlenmiştir.

Gönderen Belirli Bir Tamamlama veya Şubesi'ne Tie Git Altmodüller - İki Guys savunarak .


20
Kullanımı daha kolaygit submodule add -b some_branch git://some_repository.git some_repository
Caumons

15
Şu anda git submodule add -bbir etiket veya sha1hash alabilecek gibi görünmüyor . Sadece dal alabilir.
CMCDragonkai

Git sorun izleyicide bununla ilgili bir sorun var mı? Birisi izleyebilmemiz için bir URL gönderebilir mi? Teşekkürler.
colan

@colan hata bildirme talimatları git-scm.com/community adresindedir . Ancak -betiketleri veya commit shas değil destekleyen dalları bir özelliktir, bir hata değildir (aslında -bkısaltmasıdır --branch).
henry

1
İç çekmek. Bunca yıldan sonra, hala kamuya açık bir sorun takipçileri yok.
colan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.