Git ขั้นสูง
Amanda Crawford-Adamo
Software and Data Engineer
Git Submodule
git submodule

เพิ่ม submodule โดยใช้ลิงก์หรือไดเรกทอรีภายใต้โฟลเดอร์ที่กำหนด
git submodule add <repository link|dir> <path>
$$
ตัวอย่าง
เพิ่มไลบรารี data validator เข้าสู่โปรเจกต์ ETL ไว้ในโฟลเดอร์ libs/validator ของ ETL repo
git submodule add https://github.com/example/data-validator.git libs/validator
แสดงรายการ submodule ทั้งหมดในโปรเจกต์
git submodule status
ตัวอย่าง
$ git submodule status
e1f2...7w8x9 data_cleaning_lib
a1b2...q7r8 api_connector
d9e8...t3u2 visualization_toolkit
อัปเดต submodule ให้เป็นเวอร์ชันล่าสุด
มีหลายตัวเลือก:
git submodule update --init
git submodule update --init --remote
git submodule update --init <path_to_submodule>
ขั้นตอนการลบ submodule
git submodule deinit <submodule_name>
git rm <path>
คัดลอกไฟล์ทั้งหมดที่ต้องการใส่ใน submodule repo ใหม่ไปยังโฟลเดอร์อื่นนอก repo
ภายในโฟลเดอร์ใหม่ สร้าง repository สำหรับ submodule:
git init <new-submodule>
ใช้ filter-repo ของ git เพื่อแยกไฟล์และประวัติที่เกี่ยวข้องออกจากโปรเจกต์หลัก:
git filter-repo --path <extract_path> --invert-paths
เพิ่ม repository ที่แยกออกมาเป็น submodule ในโปรเจกต์หลัก:
git submodule add <new-submodule_path> <path_to_store_submodule>
กรณีการใช้งาน:
แนวปฏิบัติที่ดี:
Git ขั้นสูง