2011-05-15 19 views
37

मैंने अपने मुख्य गिट फ़ोल्डर पेड़ में एक सबमिशन जोड़ा है और कुछ भी नहीं बदला है लेकिन यह संशोधित दिखा रहा है। मैं इस बारे में क्या करूं?गिट सबमिशन संशोधित फाइल स्थिति

$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: example.com/soundmanager 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

मैंने एक गिट सबमिशन अपडेट करने का प्रयास किया है, लेकिन यह कुछ भी नहीं करता है।

+3

मैं इस का सामना करना पड़ा: जैसे मैं करने के लिए पहली जगह में इरादा

git rm --cached path/to/my/new_directory 

और फिर सामग्री जोड़ें:

मैं सिर्फ इस तरह submodule को दूर करने के लिए आवश्यक एक उप-निर्देशिका में जिसे मैं नहीं जानता था, जिसके कारण मुझे भ्रम का कोई अंत नहीं हुआ। यह निर्देशिका को संशोधित के रूप में सूचीबद्ध रखता है, भले ही मैंने मूल भंडार में फाइलें जोड़ दी हों। प्रश्न के लिए धन्यवाद - अच्छी तरह से चीजों को मंजूरी दे दी! –

उत्तर

56

तरीका है कि Git submodules की स्थिति रिपोर्ट है Git के हाल के संस्करणों के ऊपर बहुत कुछ बदल गया है, तो आप वास्तव में git --version के उत्पादन को भी शामिल हम सटीक रूप से मदद करने के लिए सक्षम होने के लिए के लिए करना चाहिए।

हालांकि, किसी भी मामले में, git diff example.com/soundmanager के आउटपुट आपको और बताएंगे। आप एक ही प्रतिबद्ध नाम के साथ उत्पादन देखते हैं, लेकिन -dirty साथ नए संस्करण के लिए उदाहरण के लिए कहा, तो:

diff --git a/example.com/soundmanager b/example.com/soundmanager 
--- a/example.com/soundmanager 
+++ b/example.com/soundmanager 
@@ -1 +1 @@ 
-Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7 
+Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7-dirty 

... से इसका मतलब है कि submodule में git status साफ नहीं है - cd example.com/soundmanager और कोशिश फिर git status देखें कि क्या हो रहा है।

दूसरी ओर, यदि आप अलग अलग प्रतिबद्ध संस्करणों, जैसे देखें:

diff --git a/example.com/soundmanager b/example.com/soundmanager 
index c4478af..c79d9c8 160000 
--- a/example.com/soundmanager 
+++ b/example.com/soundmanager 
@@ -1 +1 @@ 
-Subproject commit c4478af032e604bed605e82d04a248d75fa513f7 
+Subproject commit c79d9c83c2864665ca3fd0b11e20a53716d0cbb0 

... कि इसका मतलब है कि संस्करण है कि आपके submodule पर है (यानी क्या आप cd example.com/soundmanager && git show HEAD से देखें) से अलग है संस्करण मुख्य परियोजना के पेड़ में किया गया है (यानी आप git rev-parse HEAD:example.com/soundmanager से क्या देखते हैं)। यदि पूर्व सही है, तो आप अपने मुख्य परियोजना में जोड़ना चाहिए और प्रतिबद्ध submodule के नए संस्करण, की तरह कुछ के साथ:

git add example.com/soundmanager 
git commit -m "Update the soundmanager submodule" 

दूसरी ओर, अगर दूसरी स्थिति तुम क्या चाहते है, तो आप बदल सकते हैं संस्करण है कि submodule के साथ पर है:

git submodule update example.com/soundmanager 
+0

धन्यवाद। 'गिट संस्करण 1.7.0.4' – Poe

+0

'गिट diff' इंगित किया गया - गंदी, और गिट स्थिति सभी संशोधित के रूप में सभी फाइलों को दिखाया। उत्तर के लिए धन्यवाद, मैं एक सबमिशन को संशोधित करने और इसे करने के बारे में चिंतित था। मैंने जोड़ा + सबमिशन किया, और अभी भी गंदे हो रही है। एक लाइन समाप्त मुद्दे की तरह लग रहा है। मैं पथ में गया और 'गिट एड'। और इन चेतावनीओं का एक स्क्रॉल मिला: सीएफएलएफ को एलएफ द्वारा प्रतिस्थापित किया जाएगा 'मेरे पास autocrlf इनपुट सेट था। – Poe

+0

मुझे गिट के एक अद्यतन संस्करण के साथ एक रेपो मिला। 'गिट संस्करण 1.7.5.1' स्थापित किया गया है, और अब समस्या नहीं है इसलिए मैं उस परिणाम से अब खुश रहूंगा। – Poe

4

मैं गलती से विशेष रूप से एक निर्देशिका जोड़ने के बजाय बस एक नई निर्देशिका की सामग्री को जोड़कर एक submodule जोड़कर इस राज्य में मिला है। जब मैं एक Git रेपो था

git add path/to/my/new_directory/* 
संबंधित मुद्दे