สิ่งนี้ใช้ได้กับห้องสมุดของเราที่ใช้ GIT v1.7.1 ซึ่งเรามี repo แพ็คเกจ DEV และ repo แพ็คเกจสด ที่เก็บของตัวเองไม่มีอะไรนอกจากเปลือกเพื่อทำแพคเกจสินทรัพย์สำหรับโครงการ submodules ทั้งหมด
การถ่ายทอดสดนั้นไม่เคยมีการอัพเดทอย่างจงใจอย่างไรก็ตามอาจมีไฟล์แคชหรืออุบัติเหตุเกิดขึ้นทำให้ repo สกปรก ใหม่ submodules เพิ่ม DEV จะต้องเริ่มต้นภายในสดเช่นกัน
แพ็คเกจที่เก็บใน DEV
ที่นี่เราต้องการดึงการเปลี่ยนแปลงอัปสตรีมทั้งหมดที่เรายังไม่ทราบจากนั้นเราจะอัปเดตที่เก็บแพ็กเกจของเรา
# Recursively reset to the last HEAD
git submodule foreach --recursive git reset --hard
# Recursively cleanup all files and directories
git submodule foreach --recursive git clean -fd
# Recursively pull the upstream master
git submodule foreach --recursive git pull origin master
# Add / Commit / Push all updates to the package repo
git add .
git commit -m "Updates submodules"
git push
ที่เก็บแพคเกจในการถ่ายทอดสด
ที่นี่เราต้องการดึงการเปลี่ยนแปลงที่กำหนดให้กับที่เก็บ DEV แต่ไม่ทราบการเปลี่ยนแปลงต้นน้ำ
# Pull changes
git pull
# Pull status (this is required for the submodule update to work)
git status
# Initialize / Update
git submodule update --init --recursive
git reset --hard
git reset --hard origin/<branch_name>