भ्रामक त्रुटि संदेश git से


90

मुझे यह संदेश Git से मिला:

आपने दूरस्थ 'मूल' से खींचने के लिए कहा, लेकिन एक शाखा निर्दिष्ट नहीं की। क्योंकि यह आपकी वर्तमान शाखा के लिए डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया रिमोट नहीं है, इसलिए आपको कमांड लाइन पर एक शाखा निर्दिष्ट करनी होगी।

क्या कोई इसे समझा सकता है? और कैसे इसे ठीक करने के लिए अधिक महत्वपूर्ण है?

जवाबों:


89

आपको यह बताना होगा कि आप "मूल" रिमोट रेपो से किस शाखा को खींचना चाहते हैं।

मुझे लगता है कि आप डिफ़ॉल्ट शाखा (मास्टर) चाहते हैं git pull origin master आपकी समस्या ठीक हो ।

देखें git help branch, git help pullऔर git help fetch अधिक informations के लिए।


2
यह काम करने के लिए मुझे "मास्टर" शाखा की जांच करनी थी (कोई शाखा चयनित नहीं थी) और पुल, जिसने समस्या को ठीक किया।
15:28 बजे सिने

@cinek: हाँ, वर्तमान शाखा केgit pull साथ खींचता है और विलीन हो जाता है, इसलिए इसका व्यवहार पूरी तरह से इस बात पर निर्भर करता है कि किस शाखा की जाँच की गई है, और एक अलग हेड (कोई शाखा की जाँच नहीं की गई) के साथ, कोई तरीका नहीं है जिससे यह पता चले कि किस शाखा को खींचना है।
कास्कैब

@ कैंसरक: मेरा मानना ​​है कि आप नए थे, इसलिए मैं मानता हूं कि आप शाखा मास्टर, मेरी खराब :-) पर पूरी तरह से मानक स्थिति में थे।
p4bl0

86

इसे ठीक करने के लिए, यह मानते हुए कि आप masterशाखा पर हैं और masterशाखा को originनए पर्याप्त गेट संस्करणों (1.8 या नए) में रिमोट से खींचना चाहते हैं :

git branch -u origin/master master

(अन्य शाखाओं और / या रीमोट के लिए अनुरूप)

यदि आप इसे एक धक्का के साथ जोड़ सकते हैं, तो यह और भी कम है:

git push -u origin master

इसके बाद, एक सादा git pull/ git pushवह करेगा जो आप उम्मीद करते हैं।


Git 1.7 श्रृंखला के दौरान, स्विच git branchनहीं था -u(केवल git pushकिया था), और इसके बजाय आपको बहुत लंबे समय तक उपयोग करना था --set-upstream:

git branch --set-upstream master origin/master

की तुलना में तर्कों के उलट नोट करें -u। मैंने एक से अधिक बार इस आदेश को विफल किया।


इन सभी में, निम्नलिखित करने के लिए शॉर्टहैंड हैं, जिन्हें आप अभी भी स्पष्ट रूप से कर सकते हैं:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

1.7 से पहले, आपको इसे इस तरह से करना था


मुझे लगता है कि शीर्ष पर कमांड (कम से कम मेरे संस्करण में Git) "मूल" नामक एक शाखा के अपस्ट्रीम को "मूल / मास्टर" बनाता है। यदि आपकी शाखा को स्थानीय रूप से "मास्टर" कहा जाता है, तो मुझे लगता है कि आप चाहते हैं:git branch --set-upstream master origin/master
इवान डोनोवन

दिलचस्प है, -uविकल्प git branchमेरे संस्करण, 1.8.5.3 के लिए अनिर्दिष्ट है, यहां इसके प्रलेखन को और भी महत्वपूर्ण बना देता है। और, जैसा कि आप ध्यान दें, विकल्प 1.7 संस्करण में उपलब्ध नहीं था। *। चूँकि -uयह छोटा है --set-upstream, इसलिए --set-upstream@ EvanDonovan की टिप्पणी के कारण इसके तर्कों का क्रम उलट नहीं होना चाहिए ?
hobs

हालाँकि, जब मैं आपके द्वारा दिखाई जाने वाली कमांड का उपयोग करता हूं ( git branch -u origin/master master) यह मेरे लिए अपेक्षित / इच्छित के रूप में काम करता है: "शाखा मास्टर को मूल से दूरस्थ मास्टर ट्रैक करने के लिए सेट किया गया है।"
hobs

1
@ हब्स: यह वास्तव में गिट की विकृति है। -uस्विच वास्तव में है नहीं का संक्षिप्त रूप --set-upstream। इसके तर्कों के आदेश के लिए आदेश से प्रभावी रूप से उलट है --set-upstream। मुझे लगता है कि यह केवल बाद में था --set-upstream-to(नोट "-to") पेश किया गया था, जो कि -uअब वास्तव में संक्षिप्त रूप है।
अरस्तू पैगल्टज़िस

वाह! वास्तव में भ्रमित। मेरे लिए अशुभ के लिए धन्यवाद।
हॉब्स

3

संदेश कहता है कि वास्तव में यह क्या है। आपकी वर्तमान शाखा मूल में किसी भी शाखा से संबद्ध नहीं है (ट्रैकिंग नहीं है) । तो समझ में नहीं आता कि क्या खींचना है।

क्या करें? वह निर्भर करता है...

सबसे सामान्य स्थिति में आप कुछ स्थानीय शाखा xyz से काम कर रहे हैं जो कि मूल से मास्टर के क्लोन वाले मास्टर से शाखाओं में बंटी हुई है । इसे हल करने का सामान्य तरीका यह है कि मास्टर पर स्विच करें और इसे मूल के साथ सिंक्रनाइज़ करने के लिए खींचें और फिर xyz और पर वापस आएं ।rebase master

लेकिन आपकी स्थिति में आप कुछ और करना चाह सकते हैं। हम इसे आपकी शाखाओं और रीमोट के विवरणों के बारे में जाने बिना नहीं जान सकते हैं और आप इन्हें कैसे उपयोग करना चाहते हैं।

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