การลบสาขาในพื้นที่ด้วย Git


148

ฉัน googled และมีหัวข้อที่ยาวมากในหัวข้อนี้และดูเหมือนจะไม่มีอะไรช่วยได้เลย ฉันคิดว่าฉันทำอะไรผิด มีสาขาโทรTest_Branch. เมื่อฉันพยายามลบโดยใช้วิธีการแนะนำฉันได้รับข้อผิดพลาดต่อไปนี้:

ไม่สามารถลบสาขา 'Test_Branch' ที่เช็คเอาต์ที่ '[ตำแหน่งไดเรกทอรี]'

ฉันไม่ได้รับข้อมูลอื่น ๆ นอกเหนือจากนั้น ฉันสามารถทำลายสาขาที่ห่างไกลได้ง่าย แต่สาขาในพื้นที่จะไม่หายไป


BTW ฉันใหม่กับ Git โดยสิ้นเชิง ใช้เพียงไม่กี่วันที่ผ่านมา ได้เรียนหลักสูตรออนไลน์หลายเล่มและอ่านหนังสือสองสามเล่มและดูเหมือนจะไม่มีคำตอบเช่นกัน
Bob Wakefield

ถ้าคุณดำเนินการgit branchมันว่าอย่างไร?
coredump

21
ในภาพนี่คือสิ่งที่เกิดขึ้น: publicdomainpictures.net/pictures/10000/velka/…
coredump

สาขา git ให้ฉัน * Test_Branch master
Bob Wakefield

ดาวบอกคุณว่าคุณอยู่สาขาไหนซึ่งเป็นการยืนยันว่าคำตอบพูดอะไร
coredump

คำตอบ:


277

เปลี่ยนไปใช้สาขาอื่นและลบTest_Branchดังนี้:

$ git checkout master
$ git branch -d Test_Branch

หากคำสั่งด้านบนให้ข้อผิดพลาด - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete itและคุณยังต้องการลบคุณสามารถบังคับให้ลบโดยใช้-Dแทน-dดังนี้:

$ git branch -D Test_Branch

หากต้องการลบTest_Branchจากระยะไกลด้วยให้ดำเนินการ:

git push origin --delete Test_Branch

36
การเปลี่ยนสาขาคือสิ่งที่ทำให้ฉัน - จับได้ดี! คุณไม่สามารถลบสาขาได้หากคุณใช้งานอยู่ ;-)
SliverNinja - MSFT

2
หากคุณลองใช้การชำระเงินที่แตกต่างกันสองสามรายการ แต่ยังคงได้รับข้อความเดิมให้ดูที่ผลลัพธ์ของgit statusหรือgit branch; หากคุณกำลังรีแบรนช์ Test_branch เพียงแค่ตรวจสอบสาขา / คอมมิตอื่นจะไม่สามารถแก้ไขปัญหานี้ได้ แต่git rebase --abortแล้วgit checkout --detachและในที่สุดgit branch -D Test_branch
หุ่นยนต์

3
หลักฐานเพิ่มเติมที่แสดงว่าคอมไพล์ย่อมาจาก"คอมไพล์แย่มาก" ยิ่งฉันใช้มันมากเท่าไหร่ห่วงไร้สาระเหล่านี้ที่คุณต้องข้ามผ่าน โดยเฉพาะอย่างยิ่งเมื่อคุณอาจต้องการเปลี่ยนกลับไปที่สาขาเดิม
user949300

และถ้ามีคนได้รับสิ่งนี้ตอบแทนเมื่อพยายามเปลี่ยนสาขา? error: you need to resolve your current index firstและพวกเขาต้องการที่จะออกจาก? แก้ไข - วิธีแก้ไข: git reset --; git checkout -D [branch_name]ฟิว ..
พอล

จะต้องไม่ทำงานgit fetch --pruneเพราะผมลบไปแล้วสาขาในระยะไกล แต่มันก็ยังคงแสดงขึ้นหลังจากที่ในgit pull git branch -a
hipokito

21

คุณอาจเช็คเอาต์ Test_Branch และคุณไม่สามารถลบออกได้ในขณะที่เป็นสาขาปัจจุบันของคุณ ตรวจสอบสาขาอื่นแล้วลองลบ Test_Branch


15

การเข้ามาในวันนี้และการเปลี่ยนไปใช้สาขาอื่นไม่ได้ช่วยอะไร ปรากฎว่าข้อมูลเวิร์กทรีของฉันเสียหายและมีเวิร์กทรีที่มีเส้นทางโฟลเดอร์เดียวกันกับไดเร็กทอรีการทำงานของฉันโดยมีการHEADชี้ไปที่สาขา ( git worktree list) ฉันลบ.git/worktree/โฟลเดอร์ที่อ้างถึงและใช้git branch -dงานได้


4

หากคุณสร้าง worktrees หลายรายการด้วยgit worktreeคุณจะต้องเรียกใช้git pruneก่อนจึงจะสามารถลบสาขาได้


3
โดยเฉพาะอย่างยิ่งคุณจะต้องใช้git worktree prune
Sergioet

แต่อ่านสิ่งที่ git prune ทำก่อน - อาจทำให้ข้อมูลสูญหาย
sesquipedalias

1

สิ่งนี้ใช้ได้ผลสำหรับฉัน ...
ฉันได้ลบโฟลเดอร์ในโฟลเดอร์. git / worktrees แล้วลอง "git delete -D branch-name"


1

ในกรณีของฉันมีการเปลี่ยนแปลงที่ไม่ได้ผูกมัดจากสาขาก่อนหน้านี้ ฉันใช้คำสั่งต่อไปนี้แล้วลบได้ผล

ชำระเงิน git *

git หลักชำระเงิน

สาขาคอมไพล์ -D


0

เช่นเดียวกับคนอื่น ๆ ที่กล่าวถึงคุณไม่สามารถลบสาขาปัจจุบันที่คุณทำงานอยู่ได้

ในกรณีของฉันฉันเลือก "Test_Branch" ในVisual Studioและพยายามลบ "Test_Branch" จาก Sourcetree (Git GUI) และได้รับข้อความแสดงข้อผิดพลาดด้านล่าง

ไม่สามารถลบสาขา 'Test_Branch' ที่เช็คเอาต์ที่ '[ตำแหน่งไดเรกทอรี]'

เปลี่ยนไปใช้สาขาอื่นในVisual Studioและสามารถลบ "Test_Branch" จาก Sourcetree

ฉันหวังว่านี้จะช่วยให้คนที่ใช้Visual Studio & Sourcetree

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