ฉันจะลบชื่อสาขาที่ถูกลบออกจากการเติมข้อความอัตโนมัติได้อย่างไร


120

ฉันเคยgit branch -d myBranchลบสาขา แต่เมื่อฉันอยู่ในหลักและพยายามที่จะชำระเงินสาขาใหม่ที่มีgit checkout, myBranchยังคงปรากฏอยู่ในแท็บการเติมข้อความอัตโนมัติ

ฉันจะลบชื่อmyBranchออกจากแท็บเติมข้อความอัตโนมัติได้git checkoutอย่างไร


10
ไม่git branch -aยังรายการอย่างใดอย่างหนึ่งmyBranchหรือorigin/myBranch? โปรดทราบว่าแม้ว่าmyBranchจะไม่มีอยู่จริง แต่git checkout myBranchก็ยังคงเป็นทางลัดที่ใช้ได้git checkout -b myBranch origin/myBranchหากorigin/myBranchมีอยู่
twalberg

2
@twalberg คุ้มค่าที่จะโพสต์เป็นคำตอบ
cmbuckley

คำตอบ:


81

เหตุผลหนึ่งที่เป็นไปได้สำหรับเรื่องนี้ก็คือถ้าเป็นสาขาที่ห่างไกล (เช่นorigin/myBranch) ยังคงมีอยู่แล้วจะประสบความสำเร็จเป็นทางเลือกให้กับgit checkout myBranch git checkout -b myBranch origin/myBranchสิ่งนี้มีวัตถุประสงค์เพื่ออำนวยความสะดวกสำหรับกรณีทั่วไปของการชำระเงินออกจากสาขาระยะไกลเป็นครั้งแรกโดยสร้างสาขาการติดตามท้องถิ่นที่มีชื่อเหมือนกัน

มีความเป็นไปได้อื่น ๆ เช่นกันขึ้นอยู่กับว่าคุณใช้อะไรเพื่อให้เสร็จสมบูรณ์ แต่นั่นเป็นสิ่งแรกที่ฉันจะตรวจสอบ หากคุณเรียกใช้git branch -aและมีอยู่ในorigin/myBranchรายการ (หรือหนึ่งรายการสำหรับรีโมตอื่นที่ไม่ใช่originถ้าคุณมี) นั่นอาจเป็นผู้กระทำผิด


2
ขอบคุณ! ที่ดูเหมือนจะเป็นผู้ร้าย origin/myBranchยังคงมีอยู่ ถ้าฉันลบmyBranchสาขาบน Github (ผ่านอินเทอร์เฟซออนไลน์) ฉันจะโทรgit branch -d origin/myBranchไปลบสาขาระยะไกลนั้นได้อย่างปลอดภัยหรือไม่?
John Hoffman

99
@JohnHoffman ที่ควรจะปลอดภัย git fetch --prune originแต่ผมคิดว่าวิธีที่ดีกว่าจะ ซึ่งจะล้างสาขาการติดตามในเครื่องทั้งหมดที่ไม่มีอยู่บนรีโมทอีกต่อไป
twalberg

3
@twalberg ฉันไม่เชื่อว่าการลบสาขาในพื้นที่และระยะไกลก็เพียงพอแล้วที่จะกำจัดสาขาเก่าทั้งหมดในการเติมข้อความอัตโนมัติ ฉันเชื่อว่าคุณจำเป็นต้องให้git fetch --prune originการอ้างอิงในท้องถิ่นไปยังสาขาที่อยู่ห่างไกลหายไปในการเติมข้อความอัตโนมัติ อาจเป็นการดีที่จะย้ายสิ่งนั้นจากความคิดเห็นไปเป็นคำตอบ ไม่ว่าในกรณีใด ๆ ขอขอบคุณสำหรับการตอบกลับของคุณที่ช่วยฉัน!
timmyl

4
git branch -aพาฉันไปถูกทาง; เพื่อนร่วมงานของฉันแนะนำgit fetch --prune --allให้ตัดกิ่งไม้ที่ตายแล้วทั้งหมดออกจากรีโมททั้งหมดซึ่งมีประโยชน์เมื่อทำงานกับนักพัฒนาจำนวนมากที่มีส้อมจำนวนมาก
ericsoco

173

git fetch --prune --all

โพสต์สิ่งนี้เป็นคำตอบของตัวเองเนื่องจากเป็นการแก้ไขแบบบรรทัดเดียว แต่ถ้าคุณโหวตอย่าลืมโหวตคำตอบของ @ twalberg ด้านบน

ข้อเสนอแนะของ @ twalberg ที่จะgit branch -aทำให้ฉันไปถูกทาง; เพื่อนร่วมงานของฉันแนะนำgit fetch --prune --allให้ตัดกิ่งไม้ที่ตายแล้วทั้งหมดออกจากรีโมททั้งหมดซึ่งมีประโยชน์เมื่อทำงานกับนักพัฒนาจำนวนมากที่มีส้อมจำนวนมาก


19
ในขณะที่คำตอบที่ยอมรับจะให้คำอธิบายที่ดีว่าเหตุใดจึงเกิดขึ้น แต่คำตอบนี้นำเสนอวิธีแก้ปัญหาที่แท้จริงดังนั้นจึงควรได้รับการยอมรับ IMHO
Patrick Oscity

3
ชื่อสาขาที่ตายแล้วยังคงแสดงอยู่ในการเติมข้อความอัตโนมัติ
Fitsyu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.