จะลบสาขาในพื้นที่ได้อย่างไร


159

ฉันมีต้นแบบและสาขา dev ในที่เก็บของฉัน ฉันต้องการลบสาขาหลักออกจากคอมพิวเตอร์ของฉันเพื่อที่ฉันจะไม่ได้ตั้งใจทำมัน (มันเกิดขึ้น .. )

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

มีคำตอบหนึ่งที่บอกว่าจะใช้สิ่งนี้:

git branch -d local_branch_name

แต่ฉันลองมันแล้วสาขาก็ยังปรากฏในแอปพลิเคชัน GitHub


เอาต์พุตจากคำสั่งนั้นคืออะไร คุณอยู่สาขาอะไร มันจะปรากฏในคอนโซลอย่างไร
SLaks

@SLaks ฉันมีประเภทในคำถามของฉัน ในคอนโซลนั้นจริง ๆ แล้วบอกว่าสาขาถูกลบ แต่ในแอปพลิเคชัน GitHub (แม้หลังจากรีสตาร์ทแล้ว) สาขาและการมอบหมายยังคงมองเห็นได้ ผลลัพธ์คือDeleted branch master (was e8a8e29).
เนท

GitHub สำหรับ Windows แสดงสาขาไกลเกินไป
SLaks

@SLaks ดังนั้นหลังจากลบสาขาในเครื่องถ้าฉันคลิกที่มันในแอพพลิเคชั่น GitHub สำหรับ Windows มันแค่โคลนอีกครั้งหรือไม่ ฉันต้องการป้องกันตนเองจากความสามารถในการเปลี่ยนแปลงสาขาหลักโดยตรง
เนท

คำตอบ:


114

ผมคิดว่า (ขึ้นอยู่กับความคิดเห็นของคุณ) ที่ฉันเข้าใจสิ่งที่คุณต้องการจะทำ: คุณต้องการคัดลอกภายในประเทศของคุณที่เก็บจะมีทั้งสาขาในประเทศสามัญmaster, หรือสาขาที่ห่างไกลการติดตามorigin/masterแม้ว่าพื้นที่เก็บข้อมูลที่คุณโคลนที่ GitHub หนึ่ง - มีสาขาในพื้นที่masterที่คุณไม่ต้องการให้ลบออกจากเวอร์ชัน GitHub

คุณสามารถทำได้โดยการลบสาขาการติดตามระยะไกลในเครื่อง แต่มันจะกลับมาทุกครั้งที่คุณขอให้คอมไพล์ซิงโครไนซ์พื้นที่เก็บข้อมูลในท้องถิ่นของคุณกับที่เก็บรีโมตเนื่องจากคอมไพล์ของคุณถามคอมไพล์ พูดว่า "ฉันมีmaster" เพื่อให้คอมไพล์ของคุณสร้างorigin/masterเพื่อคุณเพื่อที่เก็บของคุณมีสิ่งที่พวกเขามี

หากต้องการลบสาขาการติดตามระยะไกลในพื้นที่โดยใช้อินเตอร์เฟสบรรทัดคำสั่ง:

git branch -d -r origin/master

แต่อีกครั้งมันจะกลับมาที่การซิงโครไนซ์อีกครั้ง มันเป็นไปได้ที่จะเอาชนะนี้เช่นกัน (โดยใช้remote.origin.fetchการจัดการ) แต่คุณอาจจะดีกว่าเพียงแค่ถูกระเบียบวินัยพอที่จะไม่สร้างหรือปรับเปลี่ยนmasterในประเทศ



99

บังคับลบสาขาท้องถิ่น:

$ git branch -D <branch_name>

[ หมายเหตุ ]:

"-D" เป็นตัวเลือกบังคับลบ



6
ถ้าฉันลบสาขาท้องถิ่นที่มีชุดอัปสตรีมแล้วกดปกติจะไม่ลบสาขาระยะไกลใช่ไหม
Fueled โดย Coffee


17

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

คุณสามารถรีเซ็ตการเปลี่ยนแปลงและรีโหลดมาสเตอร์จากรีโมตเซิร์ฟเวอร์:

git reset --hard origin/master

13

แอปพลิเคชัน Github สำหรับ Windows แสดงที่เก็บรีโมตสาขาทั้งหมด หากคุณลบสาขาในเครื่องด้วย$ git branch -d [branch_name]สาขาระยะไกลยังคงอยู่ในที่เก็บ Github ของคุณและจะปรากฏโดยไม่คำนึงถึงแอปพลิเคชัน Windows Github

หากคุณต้องการที่จะลบสาขาสมบูรณ์ (ระยะไกลเช่นกัน) $ git push origin :[name_of_your_new_branch]ใช้คำสั่งดังกล่าวข้างต้นในการรวมกันกับ คำเตือน:คำสั่งนี้จะลบสาขาที่มีอยู่ทั้งหมดและอาจทำให้รหัสสูญหาย ระวังฉันไม่คิดว่านี่คือสิ่งที่คุณพยายามจะทำ

อย่างไรก็ตามทุกครั้งที่คุณลบการเปลี่ยนแปลงสาขาท้องถิ่นสาขาระยะไกลจะยังคงปรากฏในแอปพลิเคชัน หากคุณไม่ต้องการทำการเปลี่ยนแปลงต่อไปเพียงแค่เพิกเฉยและอย่าคลิกมิฉะนั้นคุณอาจทำการโคลนที่เก็บข้อมูล หากคุณมีคำถามเพิ่มเติมโปรดแจ้งให้เราทราบ


1

คุณต้องเปลี่ยนเป็นสาขาอื่นและลองทำเช่นเดียวกัน

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


1
นี่ควรจะเป็นคำตอบหรือไม่? หรือความกระจ่างชี้แจง หรือคำถามธรรมดา ๆ มันสั้นมากที่ฉันบอกไม่ได้ คุณต้องการที่จะทำอย่างละเอียด?
Yunnosch

0

จากแท็กของคุณฉันกำลังสมมติว่าคุณใช้ Github ทำไมไม่สร้างกฎการป้องกันสาขาสำหรับสาขาหลักของคุณ ด้วยวิธีนี้แม้ว่าคุณจะพยายามผลักดันให้เชี่ยวชาญมันก็จะปฏิเสธมัน

1) ไปที่แท็บ 'การตั้งค่า' ของ repo ของคุณบน Github

2) คลิกที่ 'Branches' ที่เมนูด้านซ้าย

3) คลิก 'เพิ่มกฎ'

4) ป้อน 'ต้นแบบ' สำหรับรูปแบบสาขา

5) ตรวจสอบ 'ต้องการการตรวจสอบคำขอแบบดึงก่อนการรวม'

ฉันขอแนะนำให้ทำเช่นเดียวกันสำหรับสาขา dev ของคุณ

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