2017-02-23 9 views
10

मेरे पास git रेपो है जिसमें submodule निर्भरता के रूप में दूसरा है। अपने प्रोजेक्ट की जड़ (जहां .git, .gitsubmodules आदि कर रहे हैं) में मैंगिट किसी दिए गए प्रतिबद्धता के लिए विशिष्ट वैध सबमिशन लाने में विफल क्यों होता है और इसे कैसे ठीक किया जाए?

git submodule update 

यह निम्न संदेश के साथ विफल रहा है कहा जाता है:

submodule पथ 'src/ढांचे' में लाई गई है, लेकिन यह cc8c38e9d853491c672452d8dbced4666fc73ec8 नहीं था। उस प्रतिबद्धता का प्रत्यक्ष fetching विफल रहा।

जहां src/framework अपने प्रोजेक्ट (PROJECT_ROOT/src/framework) की उप-निर्देशिका है और जहां तीसरे पक्ष के रेपो भूमि होना चाहिए। दी गई प्रतिबद्ध हैश वैध है।

मैंने git clone --recursive <my-repo> भी कोशिश की है लेकिन यह भी विफल हो जाती है। इसलिए मैं वास्तव में है कि विशेष संस्करण को पुनः प्राप्त करने की जरूरत है framework मेरे कोड टूट जाता है रेपो में हाल ही में अपडेट की वजह से:

मेरी .gitsubmodules की सामग्री

[submodule "src/framework"] 
     path = src/framework 
     url = [email protected]:gh/framework.git 

कि मैं निम्नलिखित महत्वपूर्ण तथ्य ध्यान दें करने के लिए इसके अलावा है इसमें से चीजें ठीक काम कर रही थीं।

+0

* दी गई प्रतिबद्ध हैश वैध है। * क्या आपका मतलब है कि उस हैश के साथ प्रतिबद्धता सबमिशन रेपो में मौजूद है? – Leon

+0

हां, मैं अपने वेब ब्राउज़र (गिटलैब का उपयोग करके) में उस पृष्ठ पर लिंक का अनुसरण कर सकता हूं जो उस प्रतिबद्धता के साथ हुए सभी परिवर्तनों को प्रदर्शित करता है, ऐसा नहीं है कि किसी ने किसी प्रकार का रीसेट किया हो। – rbaleksandar

+0

यह एक अनुमति समस्या हो सकती है। क्या आप केवल सबमिशन रेपो क्लोन कर सकते हैं? – Leon

उत्तर

7

हाँ, मैं अपने वेब ब्राउज़र में कड़ी का अनुसरण कर सकते हैं (GitLab का उपयोग कर)

आप को क्लोन कर सकते हैं कि रेपो हालांकि, कि के साथ शामिल करता है?
गिटलैब में permission level है जो पहुंच प्रतिबंधित करेगा, इसलिए सुनिश्चित करें कि आपके गिट क्लोन आदेश सही उपयोगकर्ता के साथ निष्पादित किए गए हैं, और user home directory/.ssh में एसएसएच कुंजी के साथ निष्पादित किया गया है।

यदि आप सबमिशन रेपो स्वयं को (अपने स्थानीय हार्ड ड्राइव पर किसी भी स्थान पर) क्लोन नहीं कर सकते हैं, तो त्रुटि संदेश समझाएगा।

समस्या किसी ऐसे व्यक्ति से आई है जिसने उस काम से पहले एक प्रतिबद्धता के लिए सिर को रीसेट कर दिया है, जिसके साथ मैं काम कर रहा था। इसने संदर्भ अमान्य प्रस्तुत किया। मुझे पता नहीं है इस

आप make sure the submodule follows a branch (यहाँ, उदाहरण के लिए, master) कर सकते हैं ठीक करने का तरीका:

cd /path/to/parent/repo 
git config -f .gitmodules submodule.bar1.branch master 

फिर submodule पिछले लाए जाने पर अद्यतन प्रतिबद्ध master

git submodule update --remote 

--remote option यह सुनिश्चित करता है कि सबप्रोड्यूल अपडेट करने के लिए सुपरप्रोजेक्ट के रिकॉर्ड किए गए SHA-1 का उपयोग करेगा, लेकिन होगा इसके बजाय सबमिशन की रिमोट-ट्रैकिंग शाखा की स्थिति का उपयोग करें।

जो त्रुटि संदेश "did not contain cc8c38e9d853491c672452d8dbced4666fc73ec8" से बच जाएगा।

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

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