Git 2.23 (ไตรมาสที่ 3 ปี 2019): หากคุณต้องการโคลนและอัปเดต submodules เป็นการแก้ไขล่าสุด:
git clone --recurse-submodules --remote-submodules
หากคุณเพียงต้องการโคลนพวกเขาที่ SHA1 ที่บันทึกไว้:
git clone --recurse-submodules
ดูด้านล่าง
คำตอบเดิม 2010
ตามที่joschiกล่าวถึงในความคิดเห็นgit submodule
ตอนนี้รองรับ--recursive
ตัวเลือก (Git1.6.5 และอื่น ๆ )
หาก--recursive
มีการระบุคำสั่งนี้จะทำการหักเงินคืนใน submodules ที่ลงทะเบียนแล้วและอัพเดต submodules ที่ซ้อนอยู่ภายใน
ดูการทำงานกับ Git submodules แบบวนซ้ำสำหรับส่วน init
ดูคำgit submodule
อธิบายเพิ่มเติม
ด้วยเวอร์ชัน 1.6.5 ของ git และใหม่กว่าคุณสามารถทำสิ่งนี้ได้โดยอัตโนมัติโดยการโคลน super-project ด้วย–-recursive
ตัวเลือก:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
อัปเดตปี 2559 ด้วย git 2.8: ดู " วิธีเพิ่มความเร็ว / ดาวน์โหลดขนานของ Git submodules โดยใช้git clone --recursive
? "
คุณสามารถเริ่มต้นการดึงข้อมูล submodule โดยใช้หลายเธรดพร้อมกัน
ตัวอย่างเช่น
git fetch --recurse-submodules -j2
ยิ่งไปกว่านั้นด้วย Git 2.23 (ไตรมาสที่ 3 ปี 2019) คุณสามารถโคลนและชำระเงิน submodule ไปยังสาขาการติดตามของพวกเขาในหนึ่งคำสั่ง!
ดูกระทำ 4c69101 (19 พฤษภาคม 2019) โดยเบน Avison (bavison
)
(ผสานโดยJunio C Hamano - gitster
- in 9476094 , 17 Jun 2019)
clone
: เพิ่ม--remote-submodules
ธง
เมื่อใช้git clone --recurse-submodules
ก่อนหน้านี้ไม่มีวิธีส่งผ่าน--remote
สวิตช์ไปยังgit submodule update
คำสั่งimplicit สำหรับกรณีการใช้งานใด ๆ ที่คุณต้องการให้เช็คเอาต์ย่อยของสาขาย่อยติดตามระยะไกลแทนที่จะใช้ SHA-1 ที่บันทึกไว้ใน superproject
โปรแกรมแก้ไขนี้แก้ไขสถานการณ์นี้
อันที่จริงมันส่งผ่าน--no-fetch
ไปยังgit submodule update
ที่ที่พวกเขาเพิ่งได้โคลนโคลนดังนั้นการดึงข้อมูลจากระยะไกลอีกครั้งก็ทำหน้าที่ชะลอสิ่งต่างๆลงเท่านั้น
นั่นหมายความว่า:
--[no-]remote-submodules:
submodules ทั้งหมดที่ถูกโคลนจะใช้สถานะของ branch การติดตามระยะไกลของ submodule เพื่ออัพเดท submodule แทนที่จะเป็น SHA-1 ที่บันทึกไว้ของ superproject เทียบเท่ากับการส่งผ่านไปยัง--remote
git submodule update
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): มันจะทำการโคลนและอัพเดต submodules ในหนึ่งคำสั่ง ดูคำตอบที่แก้ไขของฉันด้านล่าง