ในระยะสั้น;
- ฉันจะลบรีโมตที่ผสานระยะไกลหลายตัวได้อย่างไร
พื้นหลังเพิ่มเติม;
ฉันมี git repo ที่มีรีโมตหลายสิบตัวที่รวมเข้ากับมาสเตอร์แล้ว ฉันสามารถลบรีโมทเหล่านี้ทีละรายการโดยใช้:
git push --delete origin myBranch-1234
อย่างไรก็ตามนี่เป็นกระบวนการที่ช้าและน่าเบื่อสำหรับรีโมททั้งหมด ฉันลองใช้คำสั่งนี้:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
แสดงรายการรีโมทที่ผสานทั้งหมด
grep origin
บอกคำสั่งให้รวมจุดเริ่มต้น
grep -v master
บอกคำสั่งให้ยกเว้นต้นแบบ
xargs git push origin --delete
บอกคำสั่งให้ลบรายการรีโมท
เมื่อรวมกันแล้วฉันคาดหวังว่าสิ่งนี้จะรวบรวมรีโมทที่ผสานทั้งหมดและลบออก
เมื่อฉันเรียกใช้คำสั่งข้างต้นฉันจะได้รับสิ่งต่อไปนี้สำหรับทุกรีโมตที่ผสาน
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
อย่างไรก็ตามมีรีโมทเหล่านี้อยู่และฉันสามารถชำระเงินแต่ละอันได้ ไซต์และผู้คนจำนวนมากแนะนำให้ฉันเรียกใช้git fetch --prune
เพื่อล้างข้อมูลอ้างอิงที่ขาดหายไป สิ่งนี้ไม่ได้ทำอะไรเลยเนื่องจากมีรีโมทเหล่านี้อยู่
ดังนั้นฉันขอถามคุณที่รักการแลกเปลี่ยนกอง;
- เหตุใดฉันจึงลบรีโมตได้ 1 อัน แต่ไม่มาก
- คำสั่งของฉันถูกต้องหรือไม่?
ฉันคิดว่าฉันขาดอะไรเล็ก ๆ ทุกครั้งที่ค้นหาสิ่งนี้ดูเหมือนว่าฉันจะทำสิ่งนี้ถูกต้อง แต่ฉันได้รับข้อผิดพลาดข้างต้น
--prune
? ในความคิดของฉันมันค่อนข้างทำให้เข้าใจผิด