คำตอบสั้น ๆ
หากคุณต้องการคำอธิบายโดยละเอียดของคำสั่งต่อไปนี้ให้ดูคำตอบแบบยาวในหัวข้อถัดไป
การลบสาขาระยะไกล
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
การลบสาขาท้องถิ่น
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
การลบสาขาการติดตามระยะไกลท้องถิ่น
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
คำตอบยาว : มีสามสาขาที่แตกต่างกันเพื่อลบ!
เมื่อคุณจัดการกับการลบสาขาทั้งในและนอกเมืองโปรดจำไว้ว่ามีสาขาที่แตกต่างกันสามสาขา :
X
สาขาในประเทศ
X
สาขากำเนิดจากระยะไกล
- ท้องถิ่นสาขาที่ห่างไกลการติดตามที่ติดตามสาขาระยะไกล
origin/X
X
โปสเตอร์ต้นฉบับที่ใช้:
git branch -rd origin/bugfix
ซึ่งมีเพียงเขาลบสาขาในประเทศระยะไกลติดตาม origin/bugfix
และไม่จริงสาขาที่ห่างไกลบนbugfix
origin
ในการลบสาขาระยะไกลที่เกิดขึ้นจริงคุณต้อง
git push origin --delete bugfix
รายละเอียดเพิ่มเติม
ส่วนต่อไปนี้อธิบายรายละเอียดเพิ่มเติมเพื่อพิจารณาเมื่อลบสาขาระยะไกลและสาขาติดตามระยะไกลของคุณ
การกดเพื่อลบสาขาระยะไกลยังเป็นการลบสาขาการติดตามระยะไกลด้วย
โปรดทราบว่าการลบสาขาที่ห่างไกลX
จากบรรทัดคำสั่งใช้git push
ยังจะลบท้องถิ่นสาขาที่ห่างไกลการติดตาม origin/X
ดังนั้นจึงไม่จำเป็นที่จะตัดล้าสมัยสาขาที่ห่างไกลกับการติดตามหรือgit fetch --prune
git fetch -p
อย่างไรก็ตามมันจะไม่เจ็บถ้าคุณทำมันอยู่ดี
คุณสามารถตรวจสอบได้ว่าสาขาการติดตามระยะไกลorigin/X
ถูกลบด้วยการเรียกใช้ต่อไปนี้:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
การตัดต้นกำเนิดสาขาการติดตามระยะไกลในท้องถิ่นที่ล้าสมัย / X
หากคุณไม่ได้ลบสาขาระยะไกลของคุณX
จากบรรทัดคำสั่ง (เช่นด้านบน) แล้วเก็บข้อมูลท้องถิ่นของคุณจะยังคงมี (ตอนนี้ล้าสมัย) origin/X
สาขาที่ห่างไกลการติดตาม สิ่งนี้อาจเกิดขึ้นได้หากคุณลบสาขาระยะไกลโดยตรงผ่านเว็บอินเตอร์เฟสของ GitHub
วิธีการทั่วไปที่จะลบล้าสมัยสาขาระยะไกลติดตามเหล่านี้ (ตั้งแต่ Git เวอร์ชั่น 1.6.6) คือการทำงานเพียงแค่git fetch
ด้วยหรือสั้น--prune
โปรดทราบว่าสิ่งนี้จะลบสาขาการติดตามระยะไกลท้องถิ่นที่ล้าสมัยทั้งหมดสำหรับสาขาระยะไกลใด ๆ ที่ไม่มีอยู่ในระยะไกล :-p
git fetch origin --prune
git fetch origin -p # Shorter
นี่คือคำพูดที่เกี่ยวข้องจากบันทึกประจำรุ่น 1.6.6 (เน้นที่เหมือง):
เรียนรู้ "git fetch" --all
และ--multiple
ตัวเลือกต่างๆเพื่อเรียกใช้การดึงข้อมูลจากแหล่งเก็บข้อมูลจำนวนมากและ--prune
ตัวเลือกในการลบสาขาการติดตามระยะไกลที่ค้างอยู่ สิ่งเหล่านี้ทำให้ "git remote update" และ "git remote พรุน" ไม่จำเป็น (ไม่มีแผนจะลบ "remote update" หรือ "remote prune")
ทางเลือกสำหรับการตัดอัตโนมัติข้างต้นสำหรับสาขาการติดตามระยะไกลที่ล้าสมัย
อีกทางเลือกหนึ่งแทนการตัดแต่งกิ่งท้องถิ่นล้าสมัยสาขาระยะไกลการติดตามของคุณผ่านgit fetch -p
, คุณสามารถหลีกเลี่ยงการดำเนินงานเครือข่ายเป็นพิเศษโดยเพียงแค่ตนเองลบสาขา (e) ด้วย--remote
หรือ-r
ธง:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
ดูสิ่งนี้ด้วย