คำเตือน: refname 'HEAD' ไม่ชัดเจน


139

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

warning: refname 'HEAD' is ambiguous.

ฉันได้รับผลลัพธ์ต่อไปนี้:

warning: refname 'HEAD' is ambiguous.
From github.com:dagda1/hornget
 * branch            master     -> FETCH_HEAD
warning: refname 'HEAD' is ambiguous.
warning: refname 'HEAD' is ambiguous.

ถ้าฉันรัน git branch -a

ฉันได้รับต่อไปนี้:

HEAD
* master
remotes/emmekappa/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

remotes/origin/HEAD -> origin/masterฉันกำลังสับสนโดย

นี่คืออะไรและฉันจะกำจัดสาขาที่ไม่ชัดเจนได้อย่างไร

ฉันมาถึงขั้นตอนนี้โดยทำการรวมที่ฉันคิดว่าฉันเพิ่มสาขาที่ไม่ชัดเจน


11
คำสั่งแรกที่คุณพยายามเรียกใช้คืออะไร? แน่นอนว่าไม่ใช่warning: refname 'HEAD' is ambiguous.
Ben James

1
remotes/origin/HEAD -> origin/masterไม่ได้เป็นปัญหา: originมันก็แสดงให้เห็นว่าที่สาขาเป็นค่าเริ่มต้นในระยะไกล สาขาชื่อHEADมี
Jakub Narębski

3
ฉันคิดว่าคุณจำเป็นต้องแก้ไขคำถามที่จะแสดงคำสั่งที่คุณพยายามที่จะรัน :)
คริส

หากต้องการทำซ้ำสิ่งนี้ให้เรียกใช้ "git fetch origin HEAD: HEAD" เห็นได้ชัดว่ามันพยายามที่จะรวมสาขาปัจจุบันเข้ากับสาขาใหม่ที่เรียกว่า HEAD
Brain2000

คำตอบ:


224

ปัญหาคือคุณมีสาขาที่เรียกว่าHEADเป็นอันตรายอย่างยิ่งเนื่องจากเป็นชื่อสัญลักษณ์ของสาขาใดก็ตามที่เป็นสาขาปัจจุบัน

เปลี่ยนชื่อ:

git branch -m HEAD newbranch

จากนั้นคุณสามารถตรวจสอบและตัดสินใจว่าจะทำอย่างไร (ลบหรือบันทึกภายใต้ชื่อสาขาอธิบาย)

( origin/HEADสาขาระยะไกลไม่มีปัญหา)


สิ่งนี้สามารถเกิดขึ้นได้หากคุณมีไฟล์หรือไดเรกทอรีที่มีชื่อเหมือนกับสาขา
Matt Connolly

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

ขอบคุณมันคงที่ น่าสังเกตเลยว่าสาขา "HEAD" ถูกสร้างขึ้นโดยอัตโนมัติไม่ใช่ฉัน มันมีการรวมการคอมมิชชันเดียวและฉันล้มเหลวในการย้อนกลับสู่สถานะที่สะอาดโดยใช้ reflog ดังนั้นฉันจึงเปลี่ยนชื่อเป็นสาขาที่ลบไปแล้ว rebased "1 ข้างหน้า" ต้นแบบท้องถิ่นของฉันไปที่ต้นกำเนิด / ต้นแบบการผลักดันโดยไม่มีปัญหา
Yunus Nedim Mehel

1
สิ่งเดียวกันสามารถเกิดขึ้นได้สำหรับแท็กไม่ใช่เฉพาะสาขา
sebix

1
ฮะ! ฉันทำงานกับหุ่นยนต์ที่มีหัวและสร้างสาขาชื่อhead(ตัวพิมพ์เล็ก)
orion elenzil

36

นอกจากนี้สิ่งนี้จะลบสาขาหากคุณไม่ต้องการ

git branch -d HEAD

ใช้ทุน-Dเพื่อบังคับการลบ:

git branch -D HEAD

3
แต่มันจะยังคงคลุมเครือมีวิธีที่จะกำจัดมันได้หรือไม่
RzR

27

หากคุณสร้างแท็กชื่อHEADโดยใช้ ...

git tag HEAD

... คุณสามารถลบแท็กนั้นโดยใช้:

git tag -d HEAD

ดูกรณีนี้: kerneltrap.org/git-tag HEAD


สิ่งนี้เกิดขึ้นเมื่อคุณเพิ่มแท็กที่มีชื่อ HEAD โดยไม่ได้ตั้งใจดังนั้นคุณต้องลบมันตามที่แนะนำไว้ที่นี่
user1610308

1

ซึ่งหมายความว่าคุณมีสาขาชื่อ "หัว" ฉันมีปัญหาเดียวกันฉันแก้ไขได้โดยทำตามคำสั่งต่อไปนี้

git branch -d head

1

ตรวจสอบการอ้างอิงที่มีอยู่ในพื้นที่เก็บข้อมูล git ของคุณ คุณจะสังเกตเห็นสอง HEAD ในที่เก็บของคุณ สิ่งนี้ทำให้สาขาของคุณมี refname HEAD ที่คลุมเครือ

git show-ref

สารละลาย:

  • เปลี่ยนชื่อสาขา

    git branch -m HEAD <new_branch_name>
    

    หรือ

  • ลบสาขา

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