ฉันจะลบ Origin / master ใน Git ได้อย่างไร


10

ฉันไม่สามารถลบออกorigin/masterจากเซิร์ฟเวอร์ของฉัน ไม่รู้ว่าทำไม

สกรีนช็อตของเทอร์มินัลของฉัน

ข้อความแสดงข้อผิดพลาดดังต่อไปนี้

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error: 
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error: 
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git'

ไม่ฉันไม่ได้ใช้Github


1
ทำไมคุณต้องการทำเช่นนั้น? มีสาขาอื่นหรือไม่
Daniel B

อันที่จริงมีสาขาอื่น ๆ (ตรวจสอบลิงค์ไปที่รูปภาพจริง ๆ แล้วคุณช่วยแสดงให้ฉันดูได้ไหม) เราต้อง rebase และเราก็ทำมันในสาขาชั่วคราวซึ่งขณะนี้ควรจะเป็นmaster masterปัญหาเดียวคือฉันไม่รู้ว่าทำไมฉันไม่สามารถฆ่า master บนเซิร์ฟเวอร์ได้
Atcold

2
อาจจะไม่ได้คำตอบที่คุณกำลังมองหา แต่คุณสามารถบังคับผลักดัน rebased masterไปorigin/masterได้อย่างมีประสิทธิภาพแทนที่คนเก่ากับใหม่
SlightlyCuban

นอกเหนือจากข้อความแสดงข้อผิดพลาดโปรดโพสต์คำสั่งที่คุณใช้
Kyralessa

@Kyralessa ตรวจสอบภาพหน้าจอ
Atcold

คำตอบ:


7

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

หากคุณเข้าถึง repo โดยตรงคุณสามารถเปิดไดเรกทอรี repor เชลล์เปล่าและใช้ old old git branchเพื่อดูว่ามีการเปิดสาขาใด git symbolic-ref HEAD refs/heads/another-branchที่จะเปลี่ยนมันไปยังสาขาอื่นคุณต้องใช้

หากคุณกำลังใช้บริการเช่น Github หรือ Gitorious คุณจะต้องใช้ UI ซึ่งเป็นเครื่องมือที่ทำให้คุณสามารถเปลี่ยนแปลงได้ (ดูคำตอบนี้สำหรับวิธีการใช้เครื่องมือทั่วไป)


เยี่ยมมากมันใช้งานได้และทำให้ฉันมีโอกาสเรียนรู้มากขึ้นrefsในGit ! ขอบคุณมาก! (ใช่ฉันรู้วิธีจัดการกับมันบนGithubแต่ไม่ใช่ในเซิร์ฟเวอร์ส่วนตัวของเรา)
Atcold

12

แทนการลบต้นแบบออกจากเซิร์ฟเวอร์คุณสามารถแทนที่ได้ดังนี้:

git push origin otherbranch:master -f

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


โอเคขอบคุณ! ฉันรู้ว่าฉันสามารถบังคับสิ่งของ แต่ฉันสงสัยว่าทำไมฉันไม่สามารถลบmasterสาขาได้และคำตอบที่ยอมรับได้อธิบายว่าทำไม
Atcold

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