ล้างโฟลเดอร์โมดูลย่อย Git เมื่อโคลน repo


130

ฉันมีหนึ่ง repo เจ้าภาพที่https://github.com/aikiframework/json ในสำเนาโลคัลของฉันฉันเพิ่มโมดูลย่อยโดยใช้คำสั่ง

git submodule add git@github.com:jcubic/json-rpc.git json-rpc

จากนั้นฉันก็ทำการกระทำและผลักดันและการเปลี่ยนแปลงจะปรากฏบน GitHub (ฉันสามารถคลิกได้) แต่เมื่อฉันโคลน repo

git clone https://github.com/aikiframework/json.git

โฟลเดอร์โมดูลย่อย json-rpc ว่างเปล่า

ฉันพลาดอะไรไปที่นี่? ฉันลืมอะไรไปหรือเปล่า? ทำไมโฟลเดอร์นั้นว่างเปล่า

คำตอบ:


201

ตกลงฉันพบแล้วจำเป็นต้องเพิ่ม--recursiveเมื่อโคลน repo

ดังนั้นคำสั่งโคลนจึงลงเอยด้วย:

git clone https://github.com/aikiframework/json.git --recursive

229
อ๋อ นอกจากนี้คุณยังสามารถดึงโมดูลย่อยหลังจากที่เกิดขึ้นจริงได้ด้วยgit submodule update --initหากคุณโคลนไปแล้ว แต่ลืมไป--recursiveแล้ว
Amber

4
เพิ่งประสบปัญหาว่ามีโมดูลย่อยในสาขาการพัฒนา แต่ยังไม่มีในสาขาหลัก เมื่อคุณโคลน repo git โดยใช้ --recursive จะไม่พบโมดูลย่อยในสาขาหลักและคุณต้องดึงข้อมูลโดยใช้ Ambers comment "git submodule update --init" เพื่อรับ subomdule ด้วย
d4Rk

11
ถ้าคุณใช้git submodule update --initคุณจะต้องไปแต่ละ repo และทำgit checkout masterมิฉะนั้นคุณจะได้รับข้อผิดพลาดYou are not currently on a branch.ในgit pullเมื่อคุณพยายามที่จะปรับปรุงมันเป็นรุ่นใหม่กว่า
Noitidart

@Noitidart มีวิธีที่ไม่ทำแบบนั้นไหม? (หลังจากโคลนโครงการเรียบร้อยแล้ว)
borgr

1
@Noitidart ขอบคุณสำหรับupdate --initคำใบ้ นั่นช่วยได้เมื่อไม่มีโคลนดั้งเดิม--recursiveอยู่ในนั้นและเพียงแค่ต้องการดึงโมดูลย่อยที่หายไป
Jari Turkia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.