2010-06-28 17 views
67

से मैं Git से यह संदेश मिल गया:भ्रामक त्रुटि संदेश Git

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

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

उत्तर

66

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

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

अधिक जानकारी के लिए git help branch, git help pull और git help fetch देखें।

+2

इसे काम करने के लिए मुझे "मास्टर" शाखा चेकआउट करना पड़ा था (वहां कोई शाखा नहीं चुनी गई थी) और खींचें, जिसने समस्या को ठीक किया। – cinek

+0

@cinek: हां, 'गिट पुल' खींचता है और * वर्तमान शाखा * के साथ विलीन हो जाता है, इसलिए इसका व्यवहार पूरी तरह से निर्भर करता है कि किस शाखा की जांच की जाती है, और एक अलग सिर (कोई शाखा चेक आउट नहीं) के साथ, यह जानने का कोई तरीका नहीं है कि क्या खींचने के लिए शाखा। – Cascabel

+0

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

4

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

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

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

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

70

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

git branch -u origin/master master 

(Analogously अन्य शाखाओं के लिए । और/या रिमोट)

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

git push -u origin master 

इसके बाद, एक सादे +०१२३७००५३२००/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 से पहले, आप यह इस तरह से करने के लिए था:


ये सब, वैसे, निम्नलिखित है, जो आप अभी भी स्पष्ट रूप से कर सकते हैं करने के लिए shorthands हैं।

+0

मुझे लगता है कि शीर्ष पर कमांड (कम से कम मेरे गिट के संस्करण में) "उत्पत्ति" नामक शाखा की अपस्ट्रीम को "मूल/मास्टर" कहा जाता है। यदि आपकी शाखा को स्थानीय रूप से "मास्टर" कहा जाता है, तो मुझे लगता है कि आप चाहेंगे: 'गिट शाखा - सेट-अपस्ट्रीम मास्टर मूल/मास्टर' –

+0

वूप्स। धन्यवाद, इवान, तय। –

+0

दिलचस्प बात यह है कि '-u' विकल्प को मेरे संस्करण, 1.8.5.3 में' गिट शाखा 'के लिए अनियंत्रित किया गया है, जिससे आपके दस्तावेज़ यहां और भी महत्वपूर्ण हैं। और, जैसा कि आप ध्यान देते हैं, विकल्प संस्करण 1.7 में अनुपलब्ध था। *। चूंकि '-यू'' -सेट-अपस्ट्रीम 'के लिए छोटा है, इसलिए @ इवानडोनोवैन की टिप्पणी के कारण आपने अपने तर्कों का क्रम उलट दिया होगा जैसा आपने' सेट-अपस्ट्रीम 'के लिए किया था? – hobs

संबंधित मुद्दे