मेरी does गिट ब्रांच ’में कोई मास्टर क्यों नहीं है?


94

मैं एक नौसिखिया हूँ और मैं एक "मास्टर" शाखा के बारे में पढ़ता रहता हूँ। क्या "मास्टर" सिर्फ एक पारंपरिक नाम है जिसे लोग इस्तेमाल करते हैं या इसका विशेष अर्थ है HEAD?

जब मैं git branchउस क्लोन पर करता हूं जो मेरे पास है, तो मुझे केवल 1 एकल शाखा दिखाई देती है - मैं जिस पर हूं। कोई "मास्टर" बिल्कुल नहीं। यदि मैं टाइप git checkout masterकरता हूं (जैसा कि मैं ट्यूटोरियल या गाइड के एक बहुत में देखता हूं), मुझे मिलता है

error: pathspec 'master' did not match any file(s) known to git.

मैं बस इस उलझन में हूं कि मेरे क्लोन के पास ऐसा क्यों नहीं है masterकि हर किसी को लगता है कि यह हमेशा मौजूद है।

जवाबों:


73

अधिकांश गिट रिपॉजिटरी masterमुख्य (और डिफ़ॉल्ट) शाखा के रूप में उपयोग करते हैं - यदि आप के माध्यम से एक नए गिट रेपो को इनिशियलाइज़ करते हैं git init, तो यह masterडिफ़ॉल्ट रूप से चेक आउट हो जाएगा ।

हालाँकि, यदि आप एक रिपॉजिटरी को क्लोन करते हैं, तो आपके पास जो डिफॉल्ट ब्रांच है, वह रिमोट के HEADपॉइंट्स हैं ( HEADजो वास्तव में एक सिंबल रेफरी है जो एक ब्रांच नेम को पॉइंट करता है)। इसलिए यदि आपके द्वारा क्लोन किए गए भंडार HEADको इंगित करने के लिए कहा गया था foo, तो आपका क्लोन सिर्फ एक fooशाखा होगा।

आपके द्वारा क्लोन किए गए रिमोट में अभी भी एक masterशाखा हो सकती है (आप के साथ जांच कर सकते हैं git ls-remote origin master), लेकिन आपने डिफ़ॉल्ट रूप से उस शाखा का स्थानीय संस्करण नहीं बनाया होगा, क्योंकि git cloneकेवल रिमोट की जांच करता है HEAD


6
और फिर अगर यह मौजूद है तो मूल से मास्टर की जांच कैसे करें?
बनीक

कैसे आप मास्टर करने के लिए HEAD सेट करते हैं
मैट स्मिथ

32
मैंने git init के साथ अपना रेपो बनाया और मास्टर ब्रांच नहीं बनाई गई। गितुब के साथ, शाखा स्वचालित रूप से बनाई जाती है, लेकिन बिटबकेट के साथ नहीं। ग़ायब चरणों थे: git add ., git commit -m "Test", तो git push -u origin master
शैलेन

12
@ मुझे यह त्रुटि "घातक: मास्टर: मान्य नहीं SHA1" मिल रही है
KK_07k11A0585

1
@ एम्बर git ls-remote origin masterकुछ भी नहीं दिखाता है।
परीसा खत्री

86

एक शाखा की जांच करने के लिए जो स्थानीय रूप से मौजूद नहीं है लेकिन दूरस्थ रेपो में है जो आप इस कमांड का उपयोग कर सकते हैं:

git checkout -t -b master origin/master

मदद करने की कोशिश करने के लिए धन्यवाद, हालांकि यह सवाल काफी पुराना है। लेकिन आपका जवाब वैसा नहीं था जैसा मैं पूछ रहा था।
aberrant80

fatal: Cannot update paths and switch to branch 'master' at the same time.
राफेल ऑनोफ्रे


एक मास्टर शाखा बनाने और डिफ़ॉल्ट के रूप में स्थापित करने के लिए
जीथब में

45

master बस एक शाखा का नाम है, इसके बारे में कुछ भी जादू नहीं है सिवाय इसके कि डिफ़ॉल्ट रूप से जब एक नया भंडार बनाया जाता है।

आप इसे वापस जोड़ सकते हैं git checkout -b master


git checkout -b masterबस मेरे लिए एक चालू एक नई शाखा जोड़ता है।
nnyby

1
@nnyby जो भी है , उससे git checkout -b masterएक masterशाखा बनाएगा HEAD- इसलिए यदि आप दूसरी शाखा पर हैं, तो यह एक masterशाखा बनाएगा । सिवाय अगर आपके पास पहले से ही एक masterशाखा है (जो आप करेंगे, जब तक कि आपने इसे हटा नहीं दिया है या कभी भी इस पर प्रतिबद्ध नहीं है)। यदि आपके पास पहले से ही एक masterशाखा है, तो यह कमांड आपको केवल एक त्रुटि देगा।
मैट कर्टिस

2
मेरा प्रश्न है: मैंने गलती से मास्टर को कैसे हटा दिया?
एरिक वॉकर

@ EricWalker masterसिर्फ एक शाखा है, जिसे के साथ हटाया जा सकता है git branch -d master। हालाँकि git आपको उस शाखा को हटाने से बचाएगा, जिस पर आप वर्तमान में हैं, masterशाखा की सुरक्षा के लिए कुछ विशेष नहीं है । विशेष रूप से इससे अधिक, यह कहना मुश्किल है कि आपने यह कैसे किया। शायद आप historyएक नज़र लेने के लिए अपने शेल के कमांड का उपयोग करते हैं?
मैट कर्टिस

1
हाय @MattCurtis, वर्तमान में आपका उत्तर भ्रामक है। git checkout -b masterकेवल तभी काम करेगा जब HEAD मूल / मास्टर पर सेट हो। किसी भी अन्य मामले में (जैसे कि आप 'विकसित' पर हैं), git checkout -b master'मास्टर' नाम की एक शाखा बनाएगा जो कि वर्तमान हेड स्थिति (जैसे 'विकास' से) आधारित है। आपको यह भी बताने की आवश्यकता है कि कौन सी शाखा नए के लिए बास्ट होगी। @ बनिएक का इस थ्रेड पर सही उत्तर है: stackoverflow.com/a/21330943/287109
AVIDeveloper

23

मुझे वास्तव में पूरी तरह से नए भंडार के साथ एक ही समस्या थी। मैंने भी एक के साथ बनाने की कोशिश की थी git checkout -b master, लेकिन यह शाखा नहीं बनाएगा। मुझे तब एहसास हुआ कि अगर मैंने कुछ बदलाव किए और उन्हें प्रतिबद्ध किया, तो गित ने मेरी मास्टर ब्रांच बनाई।


1
भ्रामक हिस्सा यह है कि लोग कहते हैं कि मेरे पास मास्टर है, लेकिन मैं जो कुछ भी करने की कोशिश करता हूं, मुझे यह कहते हुए त्रुटि संदेश मिलेगा कि मेरे पास मास्टर नहीं है। (मैं एक रेप ब्रांच बनाने की कोशिश कर रहा था, जबकि मेरा रेपो अभी भी खाली था।) कुछ (किसी भी फाइल) को कम करके, मास्टर अब अस्तित्व में आया, और मैं अन्य काम करने में सक्षम था। मैंने अन्य उत्तरों में चीजों की कोशिश की, लेकिन कुछ भी मदद नहीं की। यह एक उत्तर यहां कई लोगों के लिए लागू हो सकता है। (मैं गित में हैशिंग के बारे में बहुत कुछ पढ़ता हूं। मुझे लगता है कि अगर शुरुआत में कुछ नहीं है, तो हश करने के लिए कुछ भी नहीं है।)
फाय एन

15

मेरे मामले में एक विकसित शाखा थी लेकिन कोई मास्टर शाखा नहीं थी। इसलिए मैंने नई शाखा को मौजूदा शाखा को इंगित करने वाले रिपॉजिटरी पर क्लोन किया। तब मैंने नई मास्टर शाखा को इंगित करने के लिए लापता मास्टर शाखा और अद्यतन हेड बनाया ।

git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master

आह हम वहाँ जाते हैं .. मेरे पास कोई मास्टर या कुछ भी नहीं था। पहले मैंने एक नई फ़ाइल और प्रारंभिक प्रतिबद्धता जोड़ी - फिर ऐसा किया। एक आकर्षण की तरह काम किया
डस्टिन सिल्क

12

यदि यह एक नया रेपो है जिसे आपने क्लोन किया है, तो यह अभी भी खाली हो सकता है, इस स्थिति में:

git push -u origin master

संभावना है कि इसे सुलझाना चाहिए।

(मेरे मामले में किया था। यकीन नहीं कि यह एक ही मुद्दा है, मैंने सोचा कि मुझे यह सिर्फ पोस्ट करना चाहिए। दूसरों की मदद कर सकता है।)


8

मैं एक ही मुद्दे में भाग गया और समस्या का पता लगाया। जब आप एक भंडार शुरू करते हैं तो वास्तव में कोई शाखाएं नहीं होती हैं। जब आप प्रोजेक्ट रन शुरू करते हैं git add .और तबgit commit और मास्टर शाखा बनाई जाएगी।

आप में कुछ भी जाँच के बिना कोई मास्टर शाखा है। उस मामले में आपको उन चरणों का पालन करने की आवश्यकता है जो यहां के अन्य लोगों ने सुझाए हैं।


2
सच। एक "git init" करें जिसके बाद "git checkout -b somebranchname" होगा और आपकी कोई मास्टर ब्रांच नहीं होगी
koem

यह भी पर्याप्त नहीं हो सकता है यदि फ़ोल्डर खाली है। इसलिए, इस कार्य को करने के लिए आपको कुछ फ़ाइलों को जोड़ना चाहिए। यह एक और अजीबता वास्तव में निराशाजनक है।
एलेरो

0

ऐसा लगता है कि करने के लिए मास्टर शाखा पर कम से कम एक स्थानीय प्रतिबद्धता होनी चाहिए:

git push -u origin master

तो अगर आपने किया git init .और तब git remote add origin ...भी आपको करने की आवश्यकता है:

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