चेतावनी: 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.
बेन जेम्स

1
remotes/origin/HEAD -> origin/masterकोई समस्या नहीं है: यह सिर्फ दिखाता है कि रिमोट में कौन सी शाखा डिफ़ॉल्ट है origin। नाम की शाखा HEADहै।
जैकब नार

3
मुझे लगता है कि आपको उस कमांड को दिखाने के लिए प्रश्न को संपादित करने की आवश्यकता है जहां आप निष्पादित करने की कोशिश कर रहे हैं :)
क्रिश

इसे पुन: उत्पन्न करने के लिए, "git fetch origin HEAD: HEAD" चलाएं। जाहिरा तौर पर यह वर्तमान शाखा को एक नई शाखा में विलय करने की कोशिश करता है जिसे शाब्दिक रूप से HEAD कहा जाता है।
ब्रेन2000

जवाबों:


224

समस्या यह है कि आपके पास एक शाखा है, HEADजो बिल्कुल खतरनाक है, क्योंकि जो भी शाखा वर्तमान शाखा है उसके लिए प्रतीकात्मक नाम है ।

इसका नाम बदलें:

git branch -m HEAD newbranch

तब आप इसकी जांच कर सकते हैं और यह तय कर सकते हैं कि क्या करना है (इसे हटाएं, या वर्णनात्मक शाखा नाम के तहत सहेजें)

( origin/HEADदूरस्थ शाखा कोई समस्या नहीं है)


यह तब भी हो सकता है जब आपके पास एक शाखा के रूप में एक ही नाम के साथ एक फ़ाइल या निर्देशिका हो।
मैट कोनोली

2
जबकि origin/HEADसमस्या नहीं हो सकती है, यदि आप गलती से एक शाखा बनाते हैं जिसे origin/somebranchआईएस एक समस्या है (और उसी "अस्पष्ट" त्रुटि संदेश का परिणाम देगा)। जब आप "somebranch" से खींचने की कोशिश करते हैं, तो आप रिमोट के बजाय अपने स्थानीय (आकस्मिक) शाखा से पुलिंग करेंगे। उस मामले में, मैंने पाया कि फ्लिकरफ्लाय के git branch -d origin/somebranchकाम करने का सुझाव बहुत अच्छा है।
मशीनघाट

यह तय है, धन्यवाद। ध्यान देने योग्य बात, "हेड" शाखा स्वचालित रूप से बनाई गई है, मेरे द्वारा नहीं। इसमें एक ही मर्ज कमेटी थी और मैं रिफ्लोग का उपयोग करके एक स्वच्छ स्थिति में वापस आने में विफल रहा। इसलिए, मैंने शाखा का नाम बदल दिया, इसे हटा दिया, मेरे "1 आगे" को स्थानीय स्वामी को मूल / मास्टर से
बगावत कर

1
वही टैग के लिए हो सकता है, न केवल शाखाएं।
सेबिक्स

1
हां! मैं उन रोबोटों के साथ काम करता हूं जिनके पास एक सिर है और एक शाखा बनाई है जिसका नाम head(लोअरकेस) है।
ओरियन एलेंजिल

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

आपके गिट रिपॉजिटरी में उपलब्ध संदर्भ देखें। आप अपने भंडार में दो हेड का निरीक्षण करेंगे। यह आपकी शाखा को refname HEAD अस्पष्ट बनाता है।

git show-ref

उपाय:

  • शाखा का नाम बदलें

    git branch -m HEAD <new_branch_name>
    

    या

  • शाखा हटाओ

    git branch -d HEAD
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.