เมื่อฉันทำgit fetch origin
และที่มามีสาขาที่ถูกลบดูเหมือนว่าจะไม่อัปเดตในที่เก็บของฉัน เมื่อฉันก็ยังคงแสดงให้เห็นว่าgit branch -r
origin/DELETED_BRANCH
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
เมื่อฉันทำgit fetch origin
และที่มามีสาขาที่ถูกลบดูเหมือนว่าจะไม่อัปเดตในที่เก็บของฉัน เมื่อฉันก็ยังคงแสดงให้เห็นว่าgit branch -r
origin/DELETED_BRANCH
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
คำตอบ:
คุณต้องทำดังต่อไปนี้
git fetch -p
สิ่งนี้จะอัพเดทฐานข้อมูลท้องถิ่นของสาขาระยะไกล
origin
ทางแยกของฉัน: git fetch -p origin
เมื่อฉันจากนั้น git branch -r
สาขาระยะไกลที่ไม่มีอยู่ไม่ปรากฏขึ้นอีกต่อไป
git remote prune origin
ที่git pull --prune
กล่าวไว้ที่stackoverflow.com/a/6127884/94687และstackoverflow.com/a/17983126/94687ตามลำดับ
[deleted] (none) -> origin/ < branch name >
และสาขายังคงปรากฏบน repo ท้องถิ่นความคิดใด ๆ ทำไม?
git branch
ยังคงแสดงให้เห็นถึงสาขาที่ควรจะถูกลบ
จากhttp://www.gitguys.com/topics/adding-and-removing-remote-branches/
หลังจากที่มีคนลบสาขาจากที่เก็บระยะไกล git จะไม่ลบสาขาที่เก็บในเครื่องโดยอัตโนมัติเมื่อผู้ใช้ดึง git หรือดึง git อย่างไรก็ตามหากผู้ใช้ต้องการให้ลบสาขาการติดตามทั้งหมดออกจากที่เก็บโลคัลที่ถูกลบในที่เก็บแบบรีโมตผู้ใช้สามารถพิมพ์:
คอมไพล์กำเนิดลูกพรุนระยะไกล
ตามหมายเหตุแล้ว -p param จากgit fetch -p
จริง ๆ แล้วหมายถึง "พรุน"
ไม่ว่าคุณจะเลือกวิธีใดสาขาระยะไกลที่ไม่มีอยู่จะถูกลบออกจากที่เก็บในเครื่องของคุณ
คุณต้องทำดังต่อไปนี้
git fetch -p
เพื่อซิงโครไนซ์รายการสาขาของคุณ คู่มือการคอมไพล์กล่าวว่า
-p
,--prune
หลังจากการดึงเอาการอ้างอิงระยะไกลติดตามใด ๆ ที่มีอยู่ไม่ได้อีกต่อไปในระยะไกล แท็กจะไม่ถูกตัดหากมีการดึงแท็กนั้นเนื่องจากแท็กเริ่มต้นที่ติดตามอัตโนมัติหรือเนื่องจาก--tags
ตัวเลือก อย่างไรก็ตามหากแท็กถูกดึงข้อมูลเนื่องจากการอ้างอิงอย่างชัดเจน (บนบรรทัดคำสั่งหรือในการกำหนดค่าระยะไกลตัวอย่างเช่นหากการโคลนระยะไกลถูก--mirror
เลือกด้วยตัวเลือก) พวกเขาก็จะถูกตัดด้วยเช่นกัน
ฉันชอบใช้เป็นการส่วนตัวgit fetch origin -p --progress
เพราะมันแสดงตัวบ่งชี้ความคืบหน้า
สิ่งนี้ใช้ได้สำหรับฉัน
git remote update --prune
เกี่ยวกับgit fetch -p
พฤติกรรมของการเปลี่ยนแปลงใน Git 1.9 และมีเพียง Git 2.9.x / 2.10 สะท้อนให้เห็นว่า
ดูกระทำ 9e70233 (13 มิถุนายน 2016) โดยเจฟฟ์คิง (peff
)
(ผสานโดยJunio C Hamano - gitster
- in 1c22105 , 06 Jul 2016)
fetch
: เอกสารที่การตัดแต่งกิ่งเกิดขึ้นก่อนดึงข้อมูลสิ่งนี้มีการเปลี่ยนแปลงใน10a6cc8 (
fetch --prune
: เรียกใช้ลูกพรุนก่อนดึงข้อมูล 2014-01-02) แต่ดูเหมือนว่าไม่มีใครในการสนทนาที่รู้ว่าเรากำลังโฆษณา "หลัง" อย่างชัดเจน
ดังนั้นเอกสารตอนนี้ระบุ:
ก่อนดึงข้อมูลให้ลบการอ้างอิงติดตามระยะไกลที่ไม่มีอยู่ในรีโมท
นั่นเป็นเพราะ:
เมื่อเรามีสาขาการติดตามระยะไกลชื่อ "
frotz/nitfol
" จากการดึงข้อมูลก่อนหน้านี้และอัปสตรีมตอนนี้มีสาขาที่ชื่อ "frotz
" การดึงข้อมูลจะไม่สามารถลบ "frotz/nitfol
" โดยใช้ "git fetch --prune
" ออกจากอัปสตรีมได้ git จะแจ้งให้ผู้ใช้ใช้ "git remote prune
" เพื่อแก้ไขปัญหาเปลี่ยนวิธีการ
fetch --prune
ทำงานของ "" โดยการย้ายการดำเนินการการตัดก่อนการดึงข้อมูล วิธีนี้แทนที่จะเตือนผู้ใช้ถึงข้อขัดแย้งมันจะแก้ไขโดยอัตโนมัติ