घातक: मान्य ऑब्जेक्ट का नाम नहीं: 'मास्टर'


182

मेरे पास एक निजी सर्वर चल रहा है git 1.7 जब मैं

git init 

एक फ़ोल्डर यह एक मास्टर शाखा नहीं बनाता है। कारण जब मैं करता हूं:

git branch 

यह कुछ भी सूचीबद्ध नहीं करता है। जब मैं करता हूं:

git --bare init

यह फ़ाइलें बनाता है। जब मैं टाइप करता हूँ

git branch master 

इसे कहते हैं:

fatal: Not a valid object name: 'master'.

एक ही परिणाम जब एक नई शाखा उत्पन्न करने की कोशिश कर रहा है:git branch newbranch
सोरेन

जवाबों:


281

जब मैं git initएक फ़ोल्डर यह एक मास्टर शाखा नहीं बनाता है

यह सच है, और अपेक्षित व्यवहार है। masterजब तक आप कुछ नहीं करेंगे तब तक Git एक शाखा नहीं बनाएगा ।

जब मैं करता हूँ git --bare initयह फ़ाइलें बनाता है।

एक गैर-नंगे git initभी .gitआपके प्रोजेक्ट की जड़ में एक छिपी निर्देशिका में , एक ही फाइलें बनाएगा ।

जब मैं टाइप git branch masterकरता हूं तो यह कहता है कि "घातक: मान्य वस्तु का नाम नहीं: 'गुरु'"

यह फिर से सही व्यवहार है। जब तक आप प्रतिबद्ध नहीं हैं, तब तक कोई मास्टर शाखा नहीं है।

आपने कोई प्रश्न नहीं पूछा है, लेकिन मैं आपके द्वारा पूछे गए प्रश्न का उत्तर दूंगा। अपनी निर्देशिका में एक या एक से अधिक फाइलें जोड़ें, और git addउन्हें एक कमिट तैयार करने के लिए। फिर git commitअपनी प्रारंभिक प्रतिबद्ध और masterशाखा बनाने के लिए ।


3
तो, क्या होगा अगर मैं कभी भी "मास्टर" नामक शाखा-सूचक नहीं चाहता था? क्या होगा अगर मैं इसे "मुख्य" कहना चाहता हूं? पहली शाखा-सूचक के लिए एक अलग नाम के साथ शुरू करने का कोई तरीका नहीं है? कोई "गिट init" पैरामीटर? क्या मैं .गित / हेड में सूचीबद्ध नाम बदल सकता हूं? क्या कुछ अन्य फाइलें हैं जिन्हें मुझे बदलने की आवश्यकता है, भी?
जमैके

1
@Jemenake फिर अपनी रिपॉजिटरी में प्रवेश करें, एक कमिट करें, और ब्रांच का नाम बदलें। यदि आप वास्तव में "मास्टर" शाखा बनने से बचना चाहते हैं, तो संपादित करें .git/HEAD, और इसमें बदलाव refs/heads/masterकरें refs/heads/main, लेकिन ऐसा करने का कोई कारण नहीं है । पहली प्रतिबद्ध के बाद बस अपनी शाखा का नाम बदलें।
मेगार

13
आप git checkout -b <branchname>हेड को बदलने के लिए उपयोग कर सकते हैं - आपको फ़ाइल को संपादित करने की आवश्यकता नहीं है।
सुपर क्रिस्टल जॉन

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

अंतिम स्पष्टीकरण मुझे समझने में मदद करता है कि अगर कोई कमिट नहीं है तो शाखा मौजूद नहीं हो सकती है।
मयूर पाटिल

23

आपके द्वारा अपना पहला कमिट करने के बाद Git एक मास्टर ब्रांच बनाता है। यदि रिपॉजिटरी में कोई कोड नहीं है, तो इसके लिए कुछ भी नहीं है।


1
लेकिन आपको मास्टर में पुश करने के लिए एक नई शाखा की आवश्यकता है।
सॉरेन

1
यहाँ एक सवाल है कि 'Git एक मास्टर शाखा बनाता है जब आपने अपना पहला कमिट किया होता है।' फिर इन सब से पहले status ऑन स्टेट मास्टर ’को 'गिट स्टेटस’ क्यों दिखाता है?
टिक 20

16

सबसे पहले, जब आप "नंगे रिपॉजिटरी" बनाते हैं, तो आप इसके साथ कोई काम नहीं करने वाले हैं (इसमें वर्किंग कॉपी शामिल नहीं है, इसलिए git branch कमांड उपयोगी नहीं है)।

अब, कारण यह है कि आपके पास एक masterशाखा नहीं होने के बाद भी git initकोई कमिट नहीं है: जब आप अपना पहला कमिट बनाते हैं, तो आपके पास एक masterशाखा होगी।


1
ठीक है स्पष्ट है। लेकिन जब मैं यह कहता हूँ: घातक: खाली पहचान
रॉय वैन ज़ांटन

मैंने तय किया कि लेकिन जब मैं इस रेपो को दूसरे कंप्यूटर से खींचना / लाना चाहता हूं। क्या मुझे वहां इनिट करना चाहिए?
रॉय वैन ज़ांतेन

@RoyvanZanten आप रिसीवर की तरफ git cloneकरने के लिए बचत करने के लिए उपयोग कर सकते हैं git init
बोरेलिड

मैं यह सब काम पाने में कामयाब रहा। त्रुटियाँ नहीं। लेकिन जब मैं इसे पुश करने की कोशिश करता हूं तो यह कहता है: लेखन वस्तुएं <bla> bla> कुल <3/3> सर्वर को 59fa0tweirdcod04 मास्टर> मास्टर करने के लिए, लेकिन जब मैं सर्वर पर फाइलों की जांच करता हूं तो कुछ भी नहीं होता है।
रॉय वैन ज़ांटन

@RoyvanZanten क्या आप सर्वर रिपॉजिटरी या सर्वर पर काम करने वाली कॉपी देख रहे हैं ? तुम एक करने की ज़रूरत git checkoutहै, तो आप WC क्या में है को प्रतिबिंबित करना चाहते हैं .gitनिर्देशिका (जो तुम कहाँ धक्का दिया)।
बोरेलिड

12

नई शाखा बनाने से पहले आपको कम से कम एक बार मास्टर करने की आवश्यकता है।

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