मैं Git को सबडायरेक्ट के अलावा सब कुछ अनदेखा करने के लिए कैसे कहूं?


218

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

*
!bin/*

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

कोई सुझाव?


जवाबों:


273

यह रूट फ़ाइलों और रूट निर्देशिकाओं को अनदेखा करता है, फिर रूट बिन निर्देशिका को अनदेखा करता है:

/*
/*/
!/bin/

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


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

1
@ LB-- मेरे पास एक समान मुद्दा था, और git check-ignore -vमुझे बताया कि इसका कारण था~/.gitignore
gurney alex

@gurneyalex मुझे पता चला कि अगर मैं स्थानीय रेपो हटाकर इसे फिर से क्लोन करता हूं तो यह अपने आप ठीक हो जाता है, यह एक बग होना चाहिए।
LB--

2
/ * / आवश्यक है?
एलेक्स बेकर

3
यह मेरे लिए काम नहीं किया। मुझे !/bin/अपनी रूट .gitignoreफ़ाइल में जोड़ना था , लेकिन फिर इसके साथ मुझे एक /bin/.gitignoreफ़ाइल भी जोड़नी !*पड़ी ... उनमें से केवल एक बदलाव करने से काम नहीं चला। यह केवल दोनों परिवर्तनों के संयोजन के बाद काम किया।
फेलिप ब्रह्मा

113

यहां पर कुछ निर्देशिका में " 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
यह एक लार्वा विक्रेता के पैकेज को संशोधित करने के लिए अद्भुत काम करता है जिसे मैंने संशोधित किया था! धन्यवाद, आपने मुझे बहुत सिरदर्द से बचाया
मारिया वेलारो

इसे सर्वश्रेष्ठ उत्तर के रूप में चुना जाना चाहिए।
बहमन.एक

63

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

नोट: यह एक बहिष्करण फ़ाइल है (अर्थात .ignignore) ताकि तर्क उलटा हो। Tsp निर्देशिका को छोड़कर सभी को अनदेखा करें, tsp निर्देशिका में सभी को अनदेखा करें, src निर्देशिका को छोड़कर ...

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

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

40

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

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

.gitignore :

*
!/bin/
!bin/*

या

.gitignore :

*
!/bin/

bin/.gitignore :

!*

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


2
मेरे लिए काम नहीं किया। मेरे पास इसे काम करने के लिए इस तरह का .gitignore होना चाहिए: # Ignore everything * # But not these files... !/wp-content/ !/wp-content/plugins/ !/wp-content/plugins/my_plugin/ !/wp-content/plugins/my_plugin/* टिप्पणियों में कोई ब्लॉक कोड नहीं?
xlttj

1
टायलर के जवाब में बेहतर एकल फ़ाइल समाधान है
यारिन

19

आधिकारिक git doc से , एक उदाहरण कहता है:

विशिष्ट निर्देशिका फू / बार (नोट / * को ध्यान में रखते हुए - स्लैश के बिना, वाइल्डकार्ड भी फू / बार के भीतर सब कुछ बाहर कर देगा) को छोड़कर सब कुछ बाहर करने के लिए उदाहरण:

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

प्रमुख स्लैश के बारे में स्पष्टीकरण के लिए: जब gitignore में अग्रणी स्लैश का उपयोग करना है


धन्यवाद एक लाख, यह मेरे लिए काम किया! दूसरों के लिए ध्यान दें कि यहाँ लाइनों का क्रम महत्वपूर्ण है, उदाहरण के लिए, आपके पास / foo / * से पहले / foo / bar नहीं हो सकता है।
Iamsodarncool

13

नवीनतम GIT संस्करण में अनुसरण करने का प्रयास करें।

*
!*/
!/path/to/your/dir/**

यह वास्तव में होना चाहिए! / रास्ता / / / आपके / dir / ** अंतिम पंक्ति के लिए
faham

@ इफ़हाम, हाँ, बस इसे जोड़ा।
किर्बी

11

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

/*
!/public_html
!/.gitignore

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



5

इस अस्पष्ट बग बग का प्रयास करें।

!bin**/**

आशा करता हूँ की ये काम करेगा :)

सहायक डॉक्स गिट बग नमूना

पुनश्च: टिप्पणी करने से पहले इसे आज़माएं।


0

मुझे हाल ही में ऐसा करना पड़ा:

*
!sub-dir/
!sub-dir/*

मुझे यकीन नहीं है कि मुझे एक फ़ोल्डर को बाहर करने के लिए दो लाइनों की आवश्यकता क्यों है, लेकिन यह वही है जो मेरे और मैकोस के लिए काम करता है।

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