2009-08-08 28 views
165

मैं bin उपनिर्देशिका में होने वाले को छोड़कर अपने भंडार में सभी फ़ाइलों को अनदेखा करना चाहता हूं। मैं जोड़ने की कोशिश की मेरी .gitignore के लिए निम्न:मैं गिट को उपनिर्देशिका को छोड़कर सब कुछ अनदेखा करने के लिए कैसे कहूं?

* 
!bin/* 

यह वांछित असर नहीं करता है, हालांकि: मैं bin/ के अंदर एक नई फ़ाइल बनाया है, लेकिन git status कर अभी भी nothing to commit (working directory clean) को दर्शाता है।

कोई सुझाव?

+0

[.gitignore फ़ोल्डर को छोड़कर लेकिन विशिष्ट सबफ़ोल्डर शामिल करें] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include- विशिष्ट-subfolder) – 1615903

उत्तर

212

यह जड़ फ़ाइलों & जड़ निर्देशिका पर ध्यान नहीं देता है, तो गैर-ध्यान नहीं देता जड़ बिन निर्देशिका:

/* 
/*/ 
!/bin/ 

इस तरह आप बिन निर्देशिका के सभी मिलता है , उपनिर्देशिका और उनकी फाइलों सहित।

+13

है किसी कारण से यह मेरे लिए लगातार काम नहीं करता है। मेरे पास दो पंक्तियां हैं/सामान/'और'!/सामान/विशिष्ट/', लेकिन यह अभी भी अनदेखा/सामान/विशिष्ट/ –

+1

@ एलबी - मुझे एक समान समस्या थी, और' गिट चेक-अनदेखा -v' बताया गया था मैं '~/.gitignore' –

+0

@gurneyalex के कारण था, मुझे पता चला कि अगर मैं स्थानीय रिपो को हटा देता हूं और फिर से क्लोन करता हूं तो यह स्वयं ठीक हो जाता है, यह एक बग होना चाहिए। –

36

आपके पास एकमात्र मुद्दा यह है कि bin निर्देशिका स्वयं bin/* पैटर्न से मेल नहीं खाती है इसलिए गिट bin निर्देशिका में भी नहीं दिखता है।

दो समाधान हैं जो वसंत को ध्यान में रखते हैं।

.gitignore:

* 
!/bin/ 
!bin/* 

या

.gitignore:

* 
!/bin/ 

bin/.gitignore:

!* 

मैं रों पसंद करते हैं पहले समाधान के रूप में पारिस्थितिक समाधान bin निर्देशिका में फ़ाइलों को अनदेखा करना बंद नहीं करेगा जो उपनिर्देशिका में हैं जिन्हें bin नहीं कहा जाता है। यह आपकी स्थिति में कोई फर्क नहीं पड़ता है या नहीं।

+2

मेरे लिए काम नहीं किया । '# पर ध्यान न दें सब कुछ * # लेकिन इन फ़ाइलों को ... /WP-सामग्री/ /WP-सामग्री/plugins/ :! मैं यह काम करने के लिए इस तरह की एक .gitignore करना होगा !/wp-content/plugins/my_plugin/ !/wp-content/plugins/my_plugin/* ' टिप्पणियों में कोई ब्लॉक कोड नहीं है? – xlttj

+1

[टायलर का उत्तर] (http://stackoverflow.com/a/8594971/165673) में बेहतर एकल फ़ाइल समाधान – Yarin

10

मुझे लगता है कि एक बेहतर तरीका एक स्लैश के साथ पैटर्न शुरू करने से शीर्ष Git निर्देशिका के लिए प्रत्येक पैटर्न लंगर डालना होगा:

/* 
!/public_html 
!/.gitignore 

के बजाय सभी फाइलों अनदेखी यह केवल शीर्ष स्तर फ़ाइलों पर ध्यान नहीं देगा, नहीं निर्देशिका में वे जिन्हें आप अनदेखा नहीं करना चाहते हैं।

6

मेरे लिए यह .gitignore काम करता है:

*/ 
/* 
!bin/ 
74
यहाँ

कैसे कुछ निर्देशिका में एक निर्देशिका exept "MY_SUPER_DUPER_TEMPLATE_directory" सब कुछ की अनदेखी करने के

संरचना:/Bitrix/टेम्पलेट्स/MY_SUPER_DUPER_TEMPLATE_directory

/* 
!/bitrix 
/bitrix/* 
!/bitrix/templates 
/bitrix/templates/* 
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory 
*.DS_Store 
*.gitignore 
+1

इसने मेरे लिए उप उप निर्देशिका हल की। धन्यवाद – frostymarvelous

+5

काम करता है। आंखों को कम करने के लिए कुछ भी कम? – ed22

+0

यह संशोधित एक लार्वेल विक्रेता पैकेज को अनगिनत करने के लिए चमत्कार करता था जिसे मैंने संशोधित किया था! धन्यवाद, आपने मुझे निर्देशिका के सिद्धांत के लिए बहुत सारे सिरदर्द –

41

आप के रास्ते पर सब कुछ बाहर रखा जाना चाहिए गंतव्यों, लेकिन आपको गंतव्यों को शामिल करना होगा:

/* 
!/tsp 
/tsp/* 
!/tsp/src 
/tsp/src/* 
!/tsp/src/*.h 
!/tsp/src/*.cpp 
!/tsp/src/data.txt 
!/.gitignore 

टीएसपी निर्देशिका को छोड़कर सभी को अनदेखा करें, टीएसपी निर्देशिका में सभी को अनदेखा करें, src निर्देशिका को छोड़कर ...

+9

+1 को सहेजा, फिर, इसकी सामग्री को छोड़कर, वांछित उप-निर्देशिका आदि सहित, मैंने अपनी परियोजनाओं पर इस उत्तर का उपयोग करके समाप्त कर दिया। –

10

नवीनतम जीआईटी संस्करण में निम्नलिखित का प्रयास करें।

* 
!*/ 
!/path/to/your/dir/** 
+0

यह वास्तव में होना चाहिए!/पथ/से/your/dir/** अंतिम पंक्ति – faham

+0

@faham, हाँ, अभी इसे जोड़ा गया है। – Kirby

5

इस अस्पष्ट गिट बग को आजमाएं।

!bin**/** 

आशा है कि यह मदद करता है :)

सहायक डॉक्स git bug sample

पुनश्च: पहली टिप्पणी करने से पहले इसे प्रयास करें।

9

आधिकारिक git doc से, उदाहरणों में से एक का कहना है: एक विशिष्ट निर्देशिका foo/बार (ध्यान दें/* के अलावा सब कुछ बाहर करने के लिए

उदाहरण - स्लेश के बिना, वाइल्डकार्ड भी foo के भीतर सब कुछ शामिल नहीं होंगे/बार):

$ cat .gitignore 
# exclude everything except directory foo/bar 
/* 
!/foo 
/foo/* 
!/foo/bar 

अग्रणी स्लैश के बारे में एक स्पष्टीकरण के लिए: When to use leading slash in gitignore

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

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