2
ฉันจะแก้ไขแผนผังย่อย git ได้อย่างไรหลังจากแรงผลักดันโครงการอัปสตรีมไปยังมาสเตอร์
ฉันได้ทดลองกับการใช้ทรีย่อย git และพบกับสถานการณ์ต่อไปนี้ ฉันใช้ทรีทรี git เพื่อเพิ่มโครงการภายนอกไปยัง repo ของฉันฉันเก็บประวัติทั้งหมดของโครงการต้นน้ำอย่างตั้งใจเพราะฉันต้องการอ้างอิงประวัติของโครงการและสนับสนุนโครงการต้นน้ำในภายหลัง ตามที่ปรากฎผู้สนับสนุนคนอื่นในโครงการต้นน้ำผลักไฟล์ขนาดใหญ่เข้าไปในสาขาหลักโดยไม่ได้ตั้งใจ ในการแก้ไขปัญหานี้โครงการอัปสตรีมจะเขียนประวัติและบังคับให้ส่งไปยังต้นแบบ เมื่อสร้าง "monorepo" ของฉันฉันได้รวมการกระทำนี้และฉันก็อยากจะลบมันด้วย ฉันจะอัพเดตที่เก็บของฉันเพื่อสะท้อนประวัติศาสตร์ใหม่ของทรีย่อยได้อย่างไร ความพยายามครั้งแรกของฉันคือการใช้สาขาตัวกรองเพื่อลบทรีย่อยและประวัติทั้งหมดอย่างสมบูรณ์ git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch upstream-project-dir' --prune-empty HEAD เมื่อลบทรีย่อยเวอร์ชันเก่าออกแล้วฉันสามารถเพิ่มทรีย่อยอีกครั้งโดยใช้ upstream master ใหม่ อย่างไรก็ตามสิ่งนี้ไม่ได้ผลเพราะเหตุผลบางอย่างประวัติการส่งมอบยังคงปรากฏในเอาต์พุตบันทึก git ปรับปรุง ฉันเขียนขั้นตอนต่าง ๆ เพื่อสร้างตัวอย่างที่จำลองได้น้อยที่สุด สร้าง repo git ที่ว่างเปล่าก่อน git init test-monorepo cd ./test-monorepo สร้างความมุ่งมั่นเริ่มต้น echo hello world > …