เมื่อคุณใช้งานgit push origin :staleStuff
ระบบจะลบโดยอัตโนมัติorigin/staleStuff
ดังนั้นเมื่อคุณเรียกใช้git remote prune origin
คุณได้ตัดกิ่งบางส่วนที่ถูกคนอื่นลบออกไป มีโอกาสมากขึ้นที่เพื่อนร่วมงานของคุณจะต้องวิ่งgit prune
เพื่อกำจัดสาขาที่คุณย้ายออกไป
แล้วอะไรกันแน่git remote prune
? แนวคิดหลัก: สาขาในพื้นที่ (ไม่ใช่การติดตามสาขา) ไม่ได้สัมผัสด้วยgit remote prune
คำสั่งและควรลบออกด้วยตนเอง
ตอนนี้ตัวอย่างในโลกแห่งความจริงเพื่อความเข้าใจที่ดีขึ้น:
คุณมีที่เก็บระยะไกลที่มี 2 สาขา: master
และfeature
. สมมติว่าคุณกำลังทำงานในทั้งสองสาขาดังนั้นคุณจึงมีการอ้างอิงเหล่านี้ในที่เก็บในเครื่องของคุณ (มีการตั้งชื่ออ้างอิงแบบเต็มเพื่อหลีกเลี่ยงความสับสน):
refs/heads/master
(ชื่อย่อmaster
)
refs/heads/feature
(ชื่อย่อfeature
)
refs/remotes/origin/master
(ชื่อย่อorigin/master
)
refs/remotes/origin/feature
(ชื่อย่อorigin/feature
)
ตอนนี้สถานการณ์ทั่วไป:
- นักพัฒนารายอื่นบางรายทำงานเสร็จทั้งหมด
feature
รวมเข้าด้วยกันmaster
และลบfeature
สาขาออกจากที่เก็บระยะไกล
- โดยค่าเริ่มต้นเมื่อคุณทำ
git fetch
(หรือgit pull
) จะไม่มีการลบการอ้างอิงออกจากที่เก็บในเครื่องของคุณดังนั้นคุณยังคงมีการอ้างอิงทั้งหมด 4 รายการ
git remote prune origin
คุณตัดสินใจที่จะทำความสะอาดพวกเขาขึ้นและวิ่ง
- git ตรวจพบว่า
feature
ไม่มีสาขาอีกต่อไปดังนั้นจึงrefs/remotes/origin/feature
เป็นสาขาเก่าที่ควรลบออก
- ตอนนี้คุณมีข้อมูลอ้างอิง 3 รายการรวมถึง
refs/heads/feature
เนื่องจากgit remote prune
ไม่ได้ลบrefs/heads/*
การอ้างอิงใด ๆ
เป็นไปได้ที่จะระบุสาขาในพื้นที่ซึ่งเชื่อมโยงกับสาขาการติดตามระยะไกลโดยbranch.<branch_name>.merge
พารามิเตอร์การกำหนดค่า พารามิเตอร์นี้ไม่จำเป็นสำหรับสิ่งใดในการทำงาน (อาจยกเว้นgit pull
) ดังนั้นพารามิเตอร์นี้จึงอาจหายไป
(อัปเดตด้วยตัวอย่างและข้อมูลที่เป็นประโยชน์จากความคิดเห็น)
git remote show origin
และมองหาสาขาที่มีเครื่องหมายstale