Bir alt modülü değiştirirsem, yürütmeyi alt modül kaynağına geri gönderebilir miyim, yoksa bu bir klon gerektirir mi? Klonlanırsa, bir klonu başka bir depoda saklayabilir miyim?
Bir alt modülü değiştirirsem, yürütmeyi alt modül kaynağına geri gönderebilir miyim, yoksa bu bir klon gerektirir mi? Klonlanırsa, bir klonu başka bir depoda saklayabilir miyim?
Yanıtlar:
Bir alt modül, bazı ekstra meta verileri (gitlink ağaç girişi, .gitmodules dosyası) içeren başka bir depo içindeki bir git deposunun bir kopyasından başka bir şey değildir.
$ cd your_submodule
$ git checkout master
<hack,edit>
$ git commit -a -m "commit in submodule"
$ git push
$ cd ..
$ git add your_submodule
$ git commit -m "Updated submodule"
gh-pages
bir github
Git1.7.11'de ( [ANNOUNCE] Git 1.7.11.rc1 ve sürüm notu , Haziran 2012) şunlardan bahsettiğine dikkat edin :
"
git push --recurse-submodules
" isteğe bağlı olarak süper projeye bağlı alt modüllerin geçmişlerine bakmayı ve onları dışarı atmayı öğrendi.
Muhtemelen bu yamadan ve --on-demand
seçenekten sonra yapılır :
recurse-submodules=<check|on-demand>::
Gönderilecek revizyonlar tarafından kullanılan tüm alt modül işlemlerinin bir uzaktan izleme dalında mevcut olduğundan emin olun.
- Eğer
check
kullanılırsa, itilebilir revizyonuna bunların hepsi değişti alt modül kaydedilmesini bir uzaktan kumanda üzerinde kullanılabilir olduğunu kontrol edilecektir.
Aksi takdirde, itme iptal edilecek ve sıfırdan farklı bir durumda çıkacaktır.- Eğer
on-demand
kullanılırsa, itilebilir revizyonuna bunların hepsi değişti submodules aktarılacak.
İsteğe bağlı tüm gerekli revizyonları gerçekleştiremezse, aynı zamanda iptal edilecek ve sıfır olmayan durumla çıkacaktır.
Böylece (ana depodan) a ile her şeyi tek seferde itebilirsiniz:
git push --recurse-submodules=on-demand
Bu seçenek yalnızca bir seviye iç içe geçme için işe yarar. Başka bir alt modülün içindeki alt modülde yapılan değişiklikler itilmeyecektir.
Git 2.7 (Ocak 2016) ile, ana depoyu ve tüm alt modüllerini itmek için basit bir git itmesi yeterli olacaktır .
Bkz d34141c işlemek , f5c7cd9 işlemek , (3 Aralık 2015) f5c7cd9 işlemek (3 Aralık 2015) ve b33a15b taahhüt (17 Kasım 2015) tarafından Mike Crowe ( mikecrowe
) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster
- içinde 5d35d72 tamamlama 2015 21 Ara)
push
:recurseSubmodules
yapılandırma seçeneği ekle
--recurse-submodules
Komut satırı parametresi bir süredir var olan ama hiçbir yapılandırma dosyası eşdeğeri vardır.İçin karşılık gelen parametrenin stilini takip ederek, bu parametre için bir varsayılan sağlamak için
git fetch
icat edelimpush.recurseSubmodules
.
Bu ayrıca--recurse-submodules=no
, yapılandırmanın gerektiğinde komut satırında geçersiz kılınmasına izin vermek için eklenmesini gerektirir.Bunu gerçekleştirmenin en basit yolu,
push
kodusubmodule-config
benzer şekilde kullanmaktırfetch
.
git config
Doküman artık şunlardır :
push.recurseSubmodules
:Gönderilecek revizyonlar tarafından kullanılan tüm alt modül işlemlerinin bir uzaktan izleme dalında mevcut olduğundan emin olun.
- Değer '
check
' ise Git, itilecek revizyonlarda değiştirilen tüm alt modül işlemlerinin alt modülün en az bir uzaktan kumandasında mevcut olduğunu doğrulayacaktır. Herhangi bir kaydetme eksikse, itme iptal edilecek ve sıfır olmayan bir durumla çıkılacaktır.- Değer '
on-demand
' ise, itilecek revizyonlarda değiştirilen tüm alt modüller itilecektir. İsteğe bağlı tüm gerekli revizyonları gerçekleştiremezse, aynı zamanda iptal edilecek ve sıfır olmayan durumla çıkacaktır. -- Değer '
no
' ise, itme sırasında alt modülleri yok saymanın varsayılan davranışı korunur.Bu yapılandırmayı push sırasında '
--recurse-submodules=check|on-demand|no
' belirterek geçersiz kılabilirsiniz .
Yani:
git config push.recurseSubmodules on-demand
git push
Git 2.12 (2017 1. Çeyrek)
git push --dry-run --recurse-submodules=on-demand
aslında işe yarayacak.
Bkz. 0301c82 , commit 1aa7365 (17 Kasım 2016), Brandon Williams ( mbrandonw
) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster
- içinde 12cf113 tamamlama 2016, 16 Ara)
push run with --dry-run
aslında (Git 2.11 Aralık 2016 ve öncesi / öncesi), push alt modülleri isteğe bağlı olarak itecek şekilde yapılandırıldığında bir kuru çalıştırma gerçekleştirmez.
Bunun yerine, itilmesi gereken tüm alt modüller aslında uzaktan kumandalarına itilirken, süper proje için herhangi bir güncelleme kuru çalıştırma olarak gerçekleştirilir.
Bu bir hatadır ve kuru çalışmanın amaçlanan davranışı değildir.Alt modülleri 'isteğe bağlı' yinelemeli olarak itecek şekilde yapılandırıldığında seçeneğe
push
saygı duymayı öğretin--dry-run
.
Bu,--dry-run
kuru çalıştırma gerçekleştirilirken alt modüller için bir itme gerçekleştiren alt işleme bayrağı ileterek yapılır .
Ve yine Git 2.12'de, üst düzey süper projeyi zorlamadan alt modülleri dışarı " --recurse-submodules=only
" itmek için artık bir " " seçeneğiniz var .
Bkz 225e8bf işlemek , 6c656c3 taahhüt , 14c01bd taahhüt tarafından (19 Ara 2016) Brandon Williams ( mbrandonw
) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster
- içinde 792e22e tamamlama 2017 31 Ara)
git config push.recurseSubmodules on-demand
. O zaman her şeyi (ana depo ve alt modüller)git push
itmek için basit bir yeterli olacaktır . Bkz aşağıda benim Düzenlenen cevabı .