Git 2.23 (Q3 2019): jika Anda ingin mengkloning dan memperbarui submodules ke revisi terbaru mereka:
git clone --recurse-submodules --remote-submodules
Jika Anda hanya ingin mengkloning mereka di SHA1 yang direkam:
git clone --recurse-submodules
Lihat di bawah.
Jawaban asli 2010
Seperti joschi menyebutkan dalam komentar, git submodulesekarang mendukung --recursiveopsi (Git1.6.5 dan lebih banyak).
Jika --recursiveditentukan, perintah ini akan muncul kembali ke submodula terdaftar, dan memperbarui submodula bersarang di dalamnya.
Lihat Bekerja dengan git submodul secara rekursif untuk bagian init.
Lihat git submoduledijelaskan lebih lanjut.
Dengan versi 1.6.5 dari git dan yang lebih baru, Anda dapat melakukan ini secara otomatis dengan mengkloning super-proyek dengan –-recursiveopsi:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Perbarui 2016, dengan git 2.8: lihat " Bagaimana cara mempercepat / memparalelkan unduhan dari submodules git menggunakan git clone --recursive? "
Anda dapat memulai mengambil submodule menggunakan beberapa utas, secara paralel.
Untuk instansi:
git fetch --recurse-submodules -j2
Bahkan lebih baik, dengan Git 2.23 (Q3 2019), Anda dapat mengkloning dan checkout submodule ke cabang pelacakan mereka dalam satu perintah!
Lihat komit 4c69101 (19 Mei 2019) oleh Ben Avison ( bavison) .
(Digabung oleh Junio C Hamano - gitster- dalam komit 9476094 , 17 Jun 2019)
clone: tambahkan --remote-submodulesbendera
Saat menggunakan git clone --recurse-submodulessebelumnya tidak ada cara untuk --remoteberalih ke git submodule updateperintah implisit untuk setiap kasus penggunaan di mana Anda ingin submodula diperiksa di cabang pelacakan jarak jauh daripada dengan SHA-1 yang direkam dalam proyek super.
Patch ini memperbaiki situasi ini.
Ini sebenarnya melewati --no-fetchke git submodule updateserta dengan alasan mereka submodule yang baru saja dikloning, sehingga mengambil dari remote lagi hanya berfungsi untuk memperlambat segalanya.
Itu berarti:
--[no-]remote-submodules:
Semua submodule yang dikloning akan menggunakan status cabang pelacak jarak jauh submodule untuk memperbarui submodule, daripada SHA-1 superproyek yang direkam. Setara dengan meneruskan --remoteke git submodule update.
git clone --recurse-submodules --remote-submodules(Q3 2019 Git 2.23): itu akan mengkloning dan memperbarui submodul dalam satu perintah. Lihat jawaban saya yang diedit di bawah .