นี่คือสิ่งที่ฉันต้องการ:
REPO-A
/.git
/otherFiles
/REPO-B
/.git
/moreFiles
ฉันต้องการที่จะสามารถผลักดันเนื้อหาทั้งหมดของ REPO-A ไปที่ REMOTE-A และมีเพียง REPO-B ถึง REMOTE-B
ไปได้หรือไม่
นี่คือสิ่งที่ฉันต้องการ:
REPO-A
/.git
/otherFiles
/REPO-B
/.git
/moreFiles
ฉันต้องการที่จะสามารถผลักดันเนื้อหาทั้งหมดของ REPO-A ไปที่ REMOTE-A และมีเพียง REPO-B ถึง REMOTE-B
ไปได้หรือไม่
คำตอบ:
ดูเหมือนคุณต้องการที่จะใช้ Git submodules
Git แก้ไขปัญหานี้โดยใช้โมดูลย่อย โมดูลย่อยช่วยให้คุณเก็บที่เก็บ Git ไว้เป็นไดเร็กทอรีย่อยของที่เก็บ Git อื่น วิธีนี้ช่วยให้คุณสามารถโคลนที่เก็บอื่นในโปรเจ็กต์ของคุณและแยกการกระทำของคุณออกจากกัน
ฉันใช้ symlink เพื่อรักษาสอง repos ที่แยกจากกันและแตกต่างกันมาโดยตลอด
.gitignore
เท่านั้น
rsync -avh --delete --exclude='.git' REPO-B/ REPO-A/REPO-B-copy/
หลังจากมีการเปลี่ยนแปลงใด ๆ ใน REPO-B
ได้คุณสามารถทำสิ่งที่ต้องการได้อย่างแน่นอนด้วยลำดับชั้นของไฟล์ที่คุณวาด Repo-B จะเป็นอิสระและไม่มีความรู้เกี่ยวกับ Repo-A Repo-A จะติดตามการเปลี่ยนแปลงทั้งหมดในไฟล์ของตัวเองและไฟล์ของ Repo-B
อย่างไรก็ตามฉันไม่อยากแนะนำให้ทำเช่นนี้ ทุกครั้งที่คุณเปลี่ยนไฟล์และคอมมิตใน Repo-B คุณจะต้องยอมรับใน Repo-A การแยกสาขาใน Repo-B จะยุ่งกับ Repo-A และการแยกสาขาใน Repo-A จะไม่เป็นระเบียบ (ปัญหาในการลบโฟลเดอร์ ฯลฯ ) โมดูลย่อยเป็นวิธีที่จะไป
คุณสามารถบรรลุสิ่งที่คุณต้องการ (repo REPO-A นั้นมีไฟล์ทั้งหมดรวมถึงไฟล์ในโฟลเดอร์ REPO-B แทนที่จะเป็นเพียงข้อมูลอ้างอิง) โดยใช้ "git-subrepo":
https://github.com/ingydotnet/git-subrepo
ยังคงใช้งานได้หากผู้ร่วมให้ข้อมูลบางคนของคุณไม่ได้ติดตั้งคำสั่ง subrepo พวกเขาจะเห็นโครงสร้างโฟลเดอร์ที่สมบูรณ์ แต่จะไม่สามารถทำการเปลี่ยนแปลงใน Subrepos ได้