जैसे शीर्षक कहता है, क्या gitignore फाइल में "उन में डॉट्स के बिना फाइलें" जोड़ना संभव है?
मुझे लगता है कि यह उन सभी परेशान विस्तार रहित फ़ाइलों का ख्याल रखेगा।
जैसे शीर्षक कहता है, क्या gitignore फाइल में "उन में डॉट्स के बिना फाइलें" जोड़ना संभव है?
मुझे लगता है कि यह उन सभी परेशान विस्तार रहित फ़ाइलों का ख्याल रखेगा।
जवाबों:
आप इसके समान संयोजन की कोशिश कर सकते हैं:
*
!/**/
!*.*
उस gitignoreअपवर्जन नियम (एक नकारात्मक पैटर्न ) को सभी फ़ाइलों को अनदेखा करना चाहिए, सिवाय एक एक्सटेंशन वाले।
जैसा कि मैड फिजिसिस्ट द्वारा नीचे उल्लेख किया गया है , नियम यह है:
किसी फ़ाइल को फिर से शामिल करना संभव नहीं है यदि उस फ़ाइल की मूल निर्देशिका को बाहर रखा गया है। (*)
(*: जब तक कुछ शर्तें जीआईटी में पूरी नहीं हो जाती हैं, तब तक, नीचे देखें)
यही कारण है कि !/**/यदि हम श्वेत-सूची फ़ाइलों को चाहते हैं, तो महत्वपूर्ण है (पैरेंट फ़ोल्डरों को पुन: सूचीबद्ध करना)।
मैंने उल्लेख किया कि समान मामलों में समान नियम:
जैसा कि जेकब Narębski टिप्पणियाँ , पर ध्यान नहीं देना नहीं चाहते हो सकता है सभी extensionless फ़ाइलें।
मेरी सलाह:
.gitignoreदिखाए गए अनुसार संपादित करें : पहले से ही तैयार की गई फ़ाइलों को अनदेखा नहीं किया जाएगा (भले ही उनके पास कोई एक्सटेंशन न हो)। बाकी सभी को नजरअंदाज किया जाएगा।किसी भी भविष्य की एक्सटेंशन रहित फ़ाइलों के लिए जिसे आप संस्करण बनाना चाहते हैं:
git add -f -- myFile
ध्यान दें कि git 2.9.x / 2.10 (2016 के मध्य में?) के साथ, फ़ाइल को फिर से शामिल करना संभव हो सकता है यदि पथ में किसी वाइल्डकार्ड को फिर से शामिल न किए जाने पर उस फ़ाइल की मूल निर्देशिका को बाहर कर दिया जाए ।
Nguyuyn Thái Ngọc Duy ( pclouds) इस सुविधा को जोड़ने का प्रयास कर रहा है:
हालाँकि, एक नियम के फिर से शामिल किए जाने के बाद:
फिर से शामिल नियमों में निर्देशिका हिस्सा शाब्दिक होना चाहिए (अर्थात कोई वाइल्डकार्ड नहीं)
यह वैसे भी यहाँ काम नहीं किया होगा।
.gitignoreहोगा । मुझे पता है कि अगर तारांकन को सामने रखा जाता है, तो इससे कोई फर्क नहीं पड़ता, लेकिन यह अधिक स्पष्ट और ध्वनि वाला है कि गोले वाइल्डकार्ड को कैसे संभालते हैं ...**!**.*
!Makefile। खबरदार कि मैंने इस समाधान के साथ Git 1.7.1 में समस्याओं का अनुभव किया, जबकि इसने 1.9.0 में ठीक काम किया। मेरे मामले में रूट डायरेक्टरी में एक फाइल जोड़ने का काम ठीक रहा, लेकिन उपनिर्देशिका के अंदर एक एक्सटेंशन के साथ एक फाइल जोड़ने को नजरअंदाज कर दिया गया। ऐसा लगता है क्योंकि 1.7.1 ने **अभी तक पैटर्न का समर्थन नहीं किया है, यहां देखें !
**Git में जोड़ा गया था 1.8.2। क्या !*/इसके बजाय उपयोग करने पर कोई नुकसान है !/**/?
*
!*/
!*.*
* हर चीज को नजरअंदाज करने की बात कहता है।
!*/फिर एक निर्देशिका है कि कुछ भी unignores। यह महत्वपूर्ण है।
!*.* एक एक्सटेंशन के साथ सभी फ़ाइलों को असाइन करें।
बिना !*/नियम, एक के बिना निर्देशिका .नाम में सूचीबद्ध नहीं किया जाएगा और अपने इच्छित फ़ाइलों में से कोई भी रूट फ़ोल्डर के बाहर जोड़ा जाएगा।
संदर्भ के लिए, .ignignore प्रलेखन में इन दो खंडों को पढ़ें :
एक वैकल्पिक उपसर्ग ""! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा बाहर की गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। किसी फ़ाइल को फिर से शामिल करना संभव नहीं है यदि उस फ़ाइल की मूल निर्देशिका को बाहर रखा गया है। Git प्रदर्शन कारणों के लिए बहिष्कृत निर्देशिकाओं को सूचीबद्ध नहीं करता है, इसलिए निहित फ़ाइलों पर किसी भी पैटर्न का कोई प्रभाव नहीं पड़ता है, चाहे वे परिभाषित किए गए हों। पहले के सामने एक बैकस्लैश ("\") रखो! " पैटर्न के लिए जो एक शाब्दिक के साथ शुरू होता है "!", उदाहरण के लिए, "! महत्वपूर्ण! .txt"।
यदि पैटर्न एक स्लैश के साथ समाप्त होता है, तो इसे निम्नलिखित विवरण के उद्देश्य से हटा दिया जाता है, लेकिन यह केवल एक निर्देशिका के साथ एक मैच ढूंढेगा। दूसरे शब्दों में, foo / एक निर्देशिका foo और उसके नीचे के रास्तों से मेल खाएगा, लेकिन एक नियमित फ़ाइल या एक प्रतीकात्मक लिंक फू से मेल नहीं खाएगा (यह उस तरीके के अनुरूप है जो Git में सामान्य रूप से pathspec काम करता है)।
मेरे फ़ोल्डरों में *.c, *.h, *.txt, *.csvआदि एक्सटेंशन और बाइनरी फ़ाइलों के साथ बहुत सारी फाइलें हैं बिना किसी एक्सटेंशन के। इसलिए मैं अनदेखी करने के लिए सभी फ़ाइलों execpt जरूरत *.c,*.hऔर .gitignore, मेरे लिए यह काम करता है, से तो .gitignoreउदाहरण:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README,LICENSEयाCOPYING,INSTALL,Makefile, आदि उन्हें यद्यपि आप हमेशा कर सकते हैं के लिए मजबूर-जोड़ने और फिर वे पता लगाया जाता है