2013-05-15 4 views
52

मेरे पास एक प्रोजेक्ट है जो पथ mysubmodule पर एक सबमिशन शामिल करता था। मैंने स्रोत से नवीनतम गिट स्थापित किया (1.8.3-आरसी 2) और git submodule deinit mysubmodule चलाया। मैंने फिर .gitmodules फ़ाइल हटा दी और परिवर्तन किया। मैंने mysubmodule फ़ोल्डर से .git निर्देशिका भी हटा दी है।मैं गिट में फ़ाइलों को एक पूर्व सबमिशन के रास्ते में कैसे जोड़ूं?

मैं अब अपने रेपो में mysubmodule से फ़ाइलों को प्रतिबद्ध करना चाहता हूं, लेकिन गिट का कहना है कि इसमें कोई बदलाव नहीं है। अगर मैं git add mysubmodule टाइप करता हूं तो यह कुछ भी नहीं करता है। अगर मैं git add mysubmodule/file.txt टाइप यह fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

मैं भी अगर तुम रेपो का एकदम नया संस्करण की जाँच की खोज की है, यह कोई .gitmodules फ़ाइल होने के बावजूद एक mysubmodule निर्देशिका बनाता है, कहते हैं। और git submodule init चल रहा है आपको No submodule mapping found in .gitmodules for path 'mysubmodule' त्रुटि देता है।

मैं इसे कैसे ठीक करूं?

+1

क्या आपने यह सुनिश्चित करने के लिए [इन चरणों] [http://stackoverflow.com/a/1260982/955926) की जांच की है ताकि सबमिशन के आसपास के हिस्सों में कोई भाग न हो? मुझे नहीं लगता कि 'deinit' पूरी तरह से सबमिशन को हटा देता है। ऐसा लगता है कि इसे बस अपनी '.git/config' फ़ाइल से हटा दें, भले ही आपने एक सबमिशन के साथ रेपो क्लोन किया हो, लेकिन अभी तक' गिट इनिट 'नहीं चलाया था। यह सबमिशन को पूरी तरह से हटाने से अलग है। यदि यह मामला है, तो गिट अभी भी सोचता है कि फ़ोल्डर एक सबमिशन है, लेकिन इसे अनदेखा कर रहा है। –

उत्तर

71

गिट अभी भी लगता है कि mysubmodule एक सबमिशन है, क्योंकि यह इंडेक्स में एक विशेष मोड "160000" के साथ दर्ज किया गया है।
अधिक के लिए "git submodule update needed only initially?" देखें। mysubmodule की सामग्री पर

$ git ls-tree HEAD mysubmodule 
160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398 mysubmodule 

कि .gitmodule फ़ाइल की उपस्थिति पर निर्भर नहीं करता, या:
इसकी जांच करने के, in this answer में के रूप में, आप एक कर सकते हैं।

git rm --cached mysubmodule 

तो फिर तुम आगे बढ़ सकते हैं:

आप सूचकांक पहले से उस प्रविष्टि को निकालना होगा।

+0

'गिट एलएस-पेड़ हेड mysubmodule' ने मुझे कोई परिणाम नहीं दिया लेकिन 'git ls-files --stage | grep mysubmodule' काम किया। [संदर्भ] (https://stackoverflow.com/questions/1992018/git-submodule-update-needed-only-initially/2227598#2227598)। वह क्यों होगा? – nzn

+0

@nzn सुनिश्चित नहीं है: मैंने अभी दोनों का परीक्षण किया है, और वे काम करते हैं। आप किस गिट संस्करण का उपयोग कर रहे हैं, जिस पर ओएस? – VonC

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