Apakah mungkin sebuah submodul git dibuat dari beberapa submodul git lainnya, dan super git repo mengambil konten untuk setiap submodul?
Saya telah mencoba melakukan ini menggunakan pendekatan yang jelas / naif untuk membuat repo git yang memegang beberapa submodul.
Kemudian menambahkan repo git ini ke repo git lain sebagai submodul.
Kemudian mencoba menarik dari direktori root dari repo super git git submodule init
saat itu juga git submodule update
. Tetapi ini gagal untuk mengambil sub-submodul.
git
git-submodules
firstresponder
sumber
sumber
Jawaban:
Seperti yang disebutkan di Retrospektif menambahkan --recursive ke git repo
harus bekerja.
sumber
git submodule init; git submodule update --recursive
itu identik dengan yang di atas, tetapi sebenarnya tidak.--init
bendera, submodul, dalam salah satu submodul saya, baru saja diinisialisasi ke versi lama, bukan yang terbaru.git submodule foreach git pull origin master
, dan berfungsi sebagian: submodul diperbarui, tetapi kadang-kadangHEAD
terlepas dan untuk submodul dalam submodul, saya tidak dapat melakukan perubahan submodul langsung saya karena memiliki "konten yang dimodifikasi" bukan "komitmen baru" (karena submodulnya sendiri memiliki "komitmen baru" dan diperbarui).Seperti komentar Sridhar di bawah ini, dari Git1.6.5 +,
git clone --recursive
sekarang menjadi alternatif resmi, dijelaskan dalam:git clone --submodule
"--recursive
ke git repo "(dengan
alias $ git config --global alias.cloner = 'clone --recursive'
, yang menghindari membayangigit clone
perintah normal )inamiy benar menunjukkan yang
git submodule update --init --recursive
perintah, diperkenalkan pada komit b13fd5c , lagi di git1.6.5, oleh Johan Herland (jherland
) .Dan IceFire menambahkan di komentar :
(jawaban asli yang lebih lama)
Menurut halaman manual
harus memperbarui semua submodul bersarang. Tetapi bagian init mungkin tidak rekursif.
Bergantung pada versi Git Anda, Anda dapat kembali ke pendekatan "scripting", dengan artikel ini Memperbarui Submodul Git secara Rekursif yang memungkinkan init dan pembaruan rekursif:
sumber
git clone --recursive
cukup?git submodule update --init <submoduleName>
inilah caranya; Saya sampai di sini saat mencari jawaban ini