2012-08-15 10 views
9

कुछ बदलाव करने की कोशिश कर रहा था। मैंने git add का उपयोग किसी भी नई जावास्क्रिप्ट फ़ाइलों को जोड़ने के लिए किया है जो मैंने वाइल्डकार्ड *.js का उपयोग करके बनाया होगा। तब मैं परिवर्तन प्रतिबद्ध है और GitHub को धक्का दे:"git add * .js" ने उप-निर्देशिकाओं में फ़ाइलों को नहीं जोड़ा

 
git add *.js 
git commit -m "stuff" 
git push github master 

जब मैं GitHub की जाँच की, सभी फ़ाइलों है कि मैं संपादन किया गया था खाली थे। वे वहां थे, बस खाली।

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

तो मैं वापस चला गया और पाया है कि बाद मैं git commit -m "stuff" किया था, GIT संदेश कह रही है कि मेरी ".js" फाइलों का एक समूह का मंचन नहीं कर रहे थे, भले ही मैं सिर्फ उन्हें वाइल्ड कार्ड का उपयोग जोड़ा था दिखाया गया है: git add *.js। यह वह संदेश है जिसे मैंने प्रतिबद्ध करने का प्रयास किया था।

 
# On branch master 
# Changes not staged for commit: 
# (use "git add/rm ..." to update what will be committed) 
# (use "git checkout -- ..." to discard changes in working directory) 
# 
#  modified: src/static/directory1/js/module1/file1.js 
#  modified: src/static/directory1/js/module1/file2.js 
#  modified: src/static/directory1/js/module2/file1.js 

यह मैं था ठीक करने के लिए आदेश नीचे कुछ निर्देशिकाओं जाना में जब कर मेरी git add:

 
git add src/static/directory1/*.js 

यह काम करने के बाद मैं फिर से प्रतिबद्ध क्योंकि फ़ाइलें वहाँ थे लग रहा था और उसके बाद करने के लिए धक्का दिया GitHub:

 
git commit -m "stuff" 
git push github master 

यहाँ क्या हो रहा था, इसलिए मुझे वाइल्ड कार्ड काम करने के लिए लाने के लिए कुछ निर्देशिकाओं नीचे नेविगेट करने के लिए है?

धन्यवाद!

उत्तर

8

एक वैकल्पिक खोज आदेश का उपयोग करने के लिए है:

find . -name '*js' -exec git add {} \; 

चल रहा है कि बिना कार्यकारी आप फ़ाइलों पर आप काम कर रहे हैं की सूची देगा; इसलिए, इस आदेश को अपनी पसंद के अनुसार ट्यून करना आसान है।

+0

यह वास्तव में एकमात्र चीज है जो मेरी मशीन पर काम करती है, बहुत बहुत धन्यवाद! –

30

आप

git add '*.js' 

उपयोग करने के लिए आप उद्धरण का उपयोग करें ताकि Git वाइल्डकार्ड से पहले अपने खोल करता है प्राप्त करता है की जरूरत है। यदि आपके पास कोट्स नहीं हैं तो खोल केवल आपकी वर्तमान निर्देशिका में वाइल्डकार्ड खोज करेगा।

+0

मुझे कोई सबूत नहीं मिल रहा है कि वाइल्डकार्ड दिए जाने पर गिट उपनिर्देशिका में पुन: कार्य करेगा (मैंने कोशिश की)। –

+2

http://try.github.com/levels/1/challenges/7 –

+0

ठीक है, ऐसा लगता है कि यह मेरी स्थानीय मशीन पर नहीं है। क्या यह शायद गिट के लिए हाल ही में एक विशेष सुविधा थी? –

12

भले ही मैं सिर्फ उन्हें वाइल्ड कार्ड का उपयोग जोड़ा था: git add *.js

शैल वाइल्डकार्ड विस्तार निदेशिकाओं में नहीं recurse करता है। गिट को इसे देखने का मौका मिलने से पहले वाइल्डकार्ड का विस्तार किया जाता है।

यदि आप git add '*.js' का उपयोग करते हैं, तो गिट वाइल्डकार्ड देखेंगे और .js में समाप्त होने वाले सभी पथ नामों से मेल खाएगा। चूंकि * प्रारंभिक स्थिति में है, इसलिए यह उपनिर्देशिका सहित सभी .js फ़ाइलों को दोबारा जोड़ देगा।

+1

कृपया मेरा उत्तर चोरी न करें। :-) मैं एसओ पर अंक प्राप्त करने की कोशिश कर रहा हूं और आपने मेरे जवाब के बारे में चर्चा करने के 30 मिनट बाद आपका जवाब जोड़ा। –

+0

@AaronGray: चिंता न करें, मैंने यह भी समझ लिया कि क्या हो रहा था और यह क्यों काम किया। –

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