Pertanyaan Bagaimana caranya `git clone` termasuk submodul?


Saya mencoba memasukkan submodul ke dalam repo.

Masalahnya adalah ketika saya mengkloning repo induk, folder submodule sepenuhnya kosong.

Apakah ada cara untuk membuatnya sehingga 'git clone parent' benar-benar menempatkan data dalam folder submodule?

contoh: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native menunjuk pada git eksternal, tetapi ketika saya checkout sequelize proyek, folder itu kosong ...


1462
2017-09-26 07:13


asal


Jawaban:


Dengan versi 2.13 dari Git dan kemudian, --recursive sudah tidak digunakan lagi dan --recurse-submodules sebaiknya digunakan sebagai gantinya:

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

Catatan Editor: -j8 adalah optimalisasi kinerja opsional yang menjadi tersedia di versi 2.8, dan mengambil hingga 8 submodul pada suatu waktu secara paralel - lihat man git-clone.

Dengan versi 1.9 dari Git sampai versi 2.12 (-j hanya tersedia di versi 2.8+):

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

Dengan versi 1.6.5 Git dan yang lebih baru, Anda dapat menggunakan:

git clone --recursive git://github.com/foo/bar.git
cd bar

Untuk repo yang sudah dikloning, atau versi Git yang lebih lama, gunakan:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

2307
2017-12-14 10:43



Anda harus melakukan dua hal sebelum submodul akan diisi:

git submodule init 
git submodule update

352
2017-09-26 07:19



Jawaban asli 2010

Sebagai joschi sebutkan di komentar, git submodule sekarang mendukung --recursive pilihan (Git1.6.5 dan lainnya).

Jika --recursive ditentukan, perintah ini akan berulang ke dalam submodules yang terdaftar, dan memperbarui submodul bersarang di dalamnya.

Lihat Bekerja dengan submodul git secara rekursif untuk bagian init.
Lihat git submodule dijelaskan untuk lebih.

Dengan git versi 1.6.5 dan kemudian, Anda dapat melakukan ini secara otomatis dengan mengkloning super-proyek dengan –-recursive pilihan:

git clone --recursive git://github.com/mysociety/whatdotheyknow.git

Perbarui 2016, dengan git 2.8: lihat "Cara mempercepat / memparalelkan unduhan submodules git menggunakan git clone --recursive?"

Anda dapat memulai mengambil submodule menggunakan beberapa utas, secara paralel.
Untuk instansi:

git fetch --recurse-submodules -j2

140
2017-09-26 08:17



Anda dapat menggunakan perintah ini untuk mengkloning repo Anda dengan semua submodul:

git clone --recursive YOUR-GIT-REPO-URL

Atau jika Anda sudah mengkloning proyek, Anda dapat menggunakan:

git submodule init
git submodule update

31
2017-10-16 15:47



Jika submodul Anda ditambahkan di cabang pastikan untuk memasukkannya dalam perintah kloning Anda ...

git clone -b <branch_name> --recursive <remote> <directory>

27
2018-03-07 22:28



Coba ini:

git clone --recurse-submodules

Secara otomatis menarik dalam data submodule dengan asumsi Anda sudah menambahkan submodul ke proyek induk.


21
2018-01-16 18:39



jawaban terlambat

// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

Karena saya menghabiskan waktu satu jam penuh dengan teman: Bahkan jika Anda memiliki hak Admin di BitBucket, selalu kloning penyimpanan ORIGINAL dan gunakan kata sandi dari orang yang memiliki repo tersebut. Menyebalkan untuk mengetahui bahwa Anda mengalami minetrap ini: P


17
2018-02-16 16:10



Submodul pengambilan paralel bertujuan mengurangi waktu yang diperlukan untuk mengambil repositori dan semua submodul terkait dengan memungkinkan pengambilan beberapa repositori sekaligus. Ini dapat dilakukan dengan menggunakan opsi --jobs baru, misalnya:

git fetch --recurse-submodules --jobs=4

Menurut tim Git, ini dapat mempercepat pembaruan repositori yang mengandung banyak submodul. Saat menggunakan --recurse-submodules tanpa opsi --jobs baru, Git akan mengambil submodul satu per satu.

Sumber: http://www.infoq.com/news/2016/03/git28-released


7
2018-04-06 12:07



Coba ini untuk memasukkan submodul dalam repositori git.

git clone -b <branch_name> --recursive <remote> <directory>

atau

git clone --recurse-submodules

7
2018-02-05 04:54



Coba ini.

git clone -b <branch_name> --recursive <remote> <directory>

Jika Anda telah menambahkan submodul di cabang, pastikan Anda menambahkannya ke perintah kloning.


1
2018-06-18 08:29