Saya mencoba memasukkan submodule ke dalam repo. Masalahnya adalah ketika saya mengkloning induk repo, folder submodule sepenuhnya kosong.
Apakah ada cara untuk membuatnya sehingga git clone parent_repo
benar - benar menempatkan data di folder submodule?
Misalnya, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
menunjuk pada git submodule eksternal, tetapi ketika saya checkout sequelize
proyek, folder yang kosong.
git
git-submodules
Menandai
sumber
sumber
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 .Jawaban:
Dengan versi 2.13 dari Git dan yang lebih baru,
--recurse-submodules
dapat digunakan sebagai ganti--recursive
:Catatan Editor:
-j8
adalah pengoptimalan kinerja opsional yang tersedia di versi 2.8, dan mengambil hingga 8 submodul sekaligus secara paralel - lihatman git-clone
.Dengan versi 1.9 dari Git hingga versi 2.12 (
-j
flag hanya tersedia di versi 2.8+):Dengan Git versi 1.6.5 dan yang lebih baru, Anda dapat menggunakan:
Untuk repo yang sudah dikloning, atau versi Git yang lebih lama, gunakan:
sumber
master
?Anda harus melakukan dua hal sebelum submodule diisi:
sumber
git-submodule(1)
halaman manual ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Anda akan mengetahui bahwagit submodule update
mendukung parameter bagus bernama--recursive
.git submodule update --init
(Lihat juga jawaban saya ).Git 2.23 (Q3 2019): jika Anda ingin mengkloning dan memperbarui submodules ke revisi terbaru mereka:
Jika Anda hanya ingin mengkloning mereka di SHA1 yang direkam:
Lihat di bawah.
Jawaban asli 2010
Seperti joschi menyebutkan dalam komentar,
git submodule
sekarang mendukung--recursive
opsi (Git1.6.5 dan lebih banyak).Lihat Bekerja dengan git submodul secara rekursif untuk bagian init.
Lihat
git submodule
dijelaskan lebih lanjut.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:
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)Itu berarti:
sumber
git submodule update --init --recursive --remote
harus memperbarui mereka ke komit terbaru dari cabang masing-masing. (mis: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
jugasubmodule update --init --recursive --remote
) yang benar-benar membuat saya mengambil subrepo. Yang saya dapatkan hanyalah file .gitmodules, dan saya tidak bisa menemukan cara untuk memulai subrepo selain dari kloning secara manual satu per satu. Saya ingin setidaknya memiliki naskah untuk melakukannya dengansubmodule foreach
...[Jawaban cepat]
Anda dapat menggunakan perintah ini untuk mengkloning repo Anda dengan semua submodul:
Atau jika Anda sudah mengkloning proyek, Anda dapat menggunakan:
sumber
Jika submodule Anda ditambahkan dalam cabang pastikan untuk memasukkannya dalam perintah klon Anda ...
sumber
Coba ini:
Secara otomatis menarik data submodule dengan anggapan Anda telah menambahkan submodules ke proyek induk.
sumber
--recurse-submodules
dan--recursive
adalah alias setara .git submodule update --init --recursive
seperti yang dijelaskan dalam jawaban iniSaya pikir Anda bisa pergi dengan 3 langkah:
sumber
jawaban terlambat
Karena saya hanya menghabiskan satu jam bermain-main dengan seorang teman: Bahkan jika Anda memiliki hak Admin di BitBucket, selalu tiru repositori ASLI dan gunakan kata sandi orang yang memiliki repo itu. Mengganggu mengetahui bahwa Anda berlari ke dalam minetrap ini: P
sumber
Coba ini untuk memasukkan submodules dalam repositori git.
atau
sumber
Anda dapat menggunakan
--recursive
bendera saat mengkloning repositori. Parameter ini memaksa git untuk mengkloning semua submodul yang ditentukan dalam repositori.Setelah kloning, kadang-kadang cabang submodula dapat diubah, jadi jalankan perintah ini setelahnya:
sumber
[Jawaban cepat]
Setelah mengkloning induk repo (yang berisi beberapa submo submodule), lakukan hal berikut:
sumber
Submodules parallel fetch bertujuan untuk mengurangi waktu yang diperlukan untuk mengambil repositori dan semua submodulanya yang terkait dengan memungkinkan pengambilan beberapa repositori sekaligus. Ini dapat dicapai dengan menggunakan opsi --jobs baru, misalnya:
Menurut tim Git, ini secara substansial dapat mempercepat memperbarui repositori yang berisi banyak submodul. Saat menggunakan --recurse-submodules tanpa opsi --jobs baru, Git akan mengambil submodules satu per satu.
Sumber: http://www.infoq.com/news/2016/03/git28-released
sumber
Saya memiliki masalah yang sama untuk repositori GitHub. Akun saya hilang Kunci SSH. Prosesnya adalah
Kemudian, Anda dapat mengkloning repositori dengan submodules (
git clone --recursive YOUR-GIT-REPO-URL
)atau
Jalankan
git submodule init
dangit submodule update
ambil submodula di repositori yang sudah dikloning.sumber
Permission denied (publickey). fatal: Could not read from remote repository.
salahCoba ini.
Jika Anda telah menambahkan submodule di cabang pastikan Anda menambahkannya ke perintah clone.
sumber
Jika ini adalah proyek baru, Anda dapat melakukannya seperti ini:
Jika sudah diinstal daripada:
sumber