गित सबमॉड्यूल। सुपर-प्रोजेक्ट के एक नए क्लोन में खींचना


87

ठीक है। तो मुझे लगा कि मैंने यह चाट लिया है ... लेकिन अब ...।

मेरे पास एक परियोजना है जिसमें एक छोटे पुस्तकालय में एक सबमॉड्यूल के रूप में GitHub शामिल है। उस सुपर-प्रोजेक्ट के मूल संस्करण में सबमॉड्यूल अपेक्षित रूप से काम कर रहा है।

हालाँकि, मैंने अभी-अभी सुपरप्रोजेक्ट का क्लोन बनाया, मैंने जो सोचा था, वह करना चाहिए: "गिट सबमॉडल इनिट", सबमॉड्यूल की निर्देशिका को प्रदर्शित होने के लिए मिला, लेकिन यह खाली है।

अगर मैं अब करने की कोशिश करता हूं

git submodule update

मुझे मिला

fatal: Needed a single revision 
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'

अगर मैं कोशिश करूँ

git submodule foreach git pull

मुझे मिला

Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.

मेरे .it / config में, मेरे पास यह है:

[submodule "external_libraries/BEACHhtml"]
    url = git@github.com:interstar/BEACHhtml.git

मेरे .gitmodules में मेरे पास यह है:

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = git@github.com:interstar/BEACHhtml.git

किसी को भी एक विचार है कि क्या याद आ रही है?

जवाबों:


189

ऐसा लगता है कि अब (2019 में) नवीनतम जीआईटी क्लाइंट स्थापित करने से नीचे टिप्पणी के अनुसार समस्या हल हो सकती है। यह अब के लिए सबसे अच्छा समाधान होना चाहिए।


मुझे भी वही समस्या है जो आपको है। यह git में एक बग है: http://git.661346.n2.nabble.com/BUG-git-submodule-update-is-not-fail-safe-td7574168.html

संक्षेप में, अपनी समस्या के लिए, प्रयास करें:

# rm -rf external_libraries/BEACHhtml
# git submodule update

ऐसा लगता है कि पिछले चेकआउट फ़ोल्डर में कुछ गड़बड़ है, इसे हटा दें, और अपडेट फिर से समस्या को हल करता है।


1
मेरे लिए यह एक लटका हुआ गिट-
भ्रूण

31
मैं दोनों submodule worktree (दूर करने के लिए किया था ext/blah) और नीचे मिलान फ़ोल्डर GIT_DIR( .git/modules/ext/blah)।
टोबू

2
मेरे विशेष मामले में git submodule updateमेरे CI सर्वर पर असफलता बनी रही क्योंकि वह किसी को RSA कुंजी स्वीकार करना चाहता था (ci सर्वर सामान्य रूप से https कनेक्शन का उपयोग करता है और यह पहली बार था जब किसी सबमॉड्यूल ने ssh कनेक्शन में खींच लिया था)। आशा है कि यह किसी को सिर खुजाने का एक घंटा बचाता है!
मैवरिक

8
2016 में यह बग अभी भी चल रहा है :(
पॉलो नेव्स

6
2017 की जाँच, अभी भी मौजूद है।
william.taylor.09

4

मुझे यह समस्या थी (परतदार नेटवर्क इसलिए मैं इस तरह से सबमॉड्यूल चेकआउट छोड़ दिया गया) और मैंने इसे इस स्क्रिप्ट को बनाकर हल किया (इसका नाम git-submodule-fixइसलिए मैं इसे चला सकता था git submodule-fix)

#!/bin/bash 

for arg 
do 
  echo $arg 
  find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done

यदि आपको यह मिल जाता है git submodule update

fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'

करना

git submodule-fix some/submodule/path
git submodule update

3

2 निर्देशिकाओं को हटाकर और सबमॉड्यूल को रीफैच करने से हल:

  1. पर जाएं external_libraries/BEACHhtmlऔर .gitफ़ाइल में देखें। यह सामग्री कुछ इस तरह होनी चाहिएgitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. दोनों external_libraries/BEACHhtmlऔर .git/modules/external_libraries/BEACHhtmlनिर्देशिकाओं को हटाएं ।

अब से git submodule updateबिना त्रुटियों के चलता है।


आपको git submodule initपहले चलने की आवश्यकता हो सकती है git submodule updateताकि सबमॉड्यूल को फिर से शुरू किया जा सके, फिर यह काम करेगा।
पेलेट

1

यदि आप 2019 या बाद में पढ़ रहे हैं, तो बस गिट क्लाइंट को अपडेट करें। मेरे लिए काम किया।


0

काम और यह एक मूल क्लोन की तुलना करने के लिए एक अलग उपकरण का उपयोग करें। इसके अलावा, क्या करता हैgit submodule आउटपुट है। सुनिश्चित करें कि आप करने से पहले प्रत्येक रेपो में उसी शाखा को इंगित कर रहे हैं।

मुझे संदेह है कि आपने एक शाखा या पुराने संशोधन पर स्विच किया है जहां सबमॉडल को परिभाषित नहीं किया गया था।

उम्मीद है की यह मदद करेगा


0

मैं एक परियोजना पर एक सबमॉड्यूल के साथ एक ही मुद्दा था। जब मैंने सबमॉडल को अलग से क्लोन करने की कोशिश की तो यह अच्छी तरह से काम कर रहा था।

मैंने ऊपर दिए गए सभी उत्तरों की कोशिश की है, लेकिन सफलता के बिना (सबमॉडल फ़ोल्डर्स को हटाते हुए, अद्यतन सबमॉड्यूल अपडेट, ...)।

समय के बाद नवीनतम संस्करण (Git-1.7.11-पूर्वावलोकन20120710 से) से गिट के अद्यतन के बाद यह मुद्दा गायब हो गया। अजीब तरह से मेरे सहकर्मियों का भी पुराना संस्करण था, बिना किसी मुद्दे के काम किया, लेकिन वे मैक पर थे। मैं विन 7 64 बिट पर हूं।

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