2010-09-15 15 views
43

मैं रूट में गिटिनोर नियमों को छोड़कर उपनिर्देशिका में सभी .gitignore नियमों को अनदेखा करना चाहता हूं।उपनिर्देशिका में gitignore नियमों को अनदेखा करना संभव है?

उदाहरण के लिए) मेरे पास पहले से .gitignore फ़ाइल निर्देशिका संरचना /a में फ़ाइल है।

और में .gitignore फ़ाइल भी है। मान लें /aa.txtb.txt फ़ाइलें हैं।

/a/b में .config फ़ाइल है। .gitignore.config को /a/b में परिभाषित करता है।

.config फ़ाइल .gitignore/a/b में अनदेखा कर दी जाएगी।

लेकिन मैं वास्तव में उप-निर्देशिका के .gitignore के नियमों की अनदेखी करके .config फ़ाइल ट्रैक करना चाहते हैं।

क्या यह संभव है?

अग्रिम

धन्यवाद

उत्तर

74

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

आप कहते हैं:

 
project/.gitignore 
project/stuff/.gitignore 

सामान में .gitignore/रूट निर्देशिका में .gitignore पार कर जाएगी।

git help gitignore या man gitignore में क्या संभव है इसके बारे में काफी कुछ जानकारी है।

+2

मुझे लगता है कि ओपी पूछ रहा है कि क्या आपके पास निर्देशिका संरचना '/ a/b/c' है और आप'/a/b' में '.gitignore' अपडेट करते हैं, क्या यह'/a/b/c' में संभव है '/ a/b' में नियमों को अनदेखा करने के लिए और इसके बजाय केवल '/ a' से नियमों का उपयोग करें। –

+33

हाँ, अगर यह सवाल था, तो श्रृंखला के नीचे एक .gitignore में नियमों को अस्वीकार करना संभव है। '" एक वैकल्पिक उपसर्ग! जो पैटर्न को अस्वीकार करता है; पिछले पैटर्न द्वारा छोड़ा गया कोई मिलान फ़ाइल फिर से शामिल हो जाएगी। " – signine

+2

@signine निर्देशिकाओं के साथ काम नहीं करता है। [मेरा जवाब] देखें (http://stackoverflow.com/a/36108231/624787)। –

26

आइए कहें कि आप अपने भंडार में node_modules शामिल करना चाहते हैं, लेकिन लाइन के नीचे कुछ मॉड्यूल .gitignore है। जहां तक ​​

# Make sure to include everything in node_modules. 
!node_modules/** 
+1

क्या ऐसा करने का एक और सामान्य तरीका है? मान लें कि मुझे 'node_modules/mod1', 'node_modules/mod2' दोनों के अंदर एक .gitignore है जो उन के अंदर गहरे' node_modules' को अनदेखा करता है (जैसे 'node_modules/mod1/node_modules' में। मैं अक्सर मॉड्यूल जोड़ता हूं और हटा देता हूं मैं 'node_modules/mod1/.gitignore' को अनदेखा करने के लिए नियमों को मैन्युअल रूप से अच्छी तरह से नहीं जोड़ सकता हूं और मैन्युअल रूप से'! Node_modules/mod1/node_modules 'जोड़ सकता हूं। असल में मैं एक उल्का ऐप और सभी एम्बेडेड को तैनात करने की कोशिश कर रहा हूं '.gitignores' इसे गिट में प्राप्त करना असंभव बना रहा है। – gman

4

के रूप में मैं वहाँ यह करने के लिए कोई रास्ता नहीं है पता है: आप अपने जड़ .gitignore फ़ाइल में निम्न जोड़कर नियम नकारना कर सकते हैं। स्थानीय .gitignore रूट ginignore ओवरराइट करेगा मेरा वर्कअराउंड मैन्युअल रूप से जोड़ रहा है।

git add --force [ your file and folder] 
+0

बच्चे '.gitignore' मेरे लिए काम नहीं करता क्योंकि माता-पिता किसी भी बच्चे फ़ोल्डर सेटिंग्स को ओवरराइड करता है। अगर आप' git add -f myfile.txt 'का उपयोग करके जोड़ को मजबूर करते हैं। यह माता-पिता '.gitignore' सेटिंग्स को बाईपास करने में परिवर्तनों को ट्रैक करना शुरू कर देगा। – SliverNinja

5

यहां समस्या की कुंजी यह है कि एक मूल निर्देशिका को बाहर रखा गया है। $ man gitignore से:

यदि फ़ाइल की मूल निर्देशिका को बाहर रखा गया है तो फ़ाइल को फिर से शामिल करना संभव नहीं है। गिट प्रदर्शन कारणों से बहिष्कृत निर्देशिकाओं को सूचीबद्ध नहीं करता है, इसलिए निहित फ़ाइलों पर किसी भी पैटर्न का कोई प्रभाव नहीं पड़ता है, इससे कोई फर्क नहीं पड़ता कि उन्हें कहां परिभाषित किया गया है।

यहां बताया गया है कि मैं इसे काम करने के लिए कैसे प्राप्त कर चुका हूं।यह देखते हुए:

/a/... 
/b/foo 
/c/... 

/.gitignore:

/* 
!/b 

फिर /b/foo अप के रूप में शामिल फ़ाइलों जबकि /a और /c में सब कुछ बाहर रखा जाएगा दिखाएगा। व्यापार बंद यह है कि आपको किसी भी निर्देशिका के सभी माता-पिता के लिए एक नकारात्मकता जोड़नी है जिसमें आप फाइलें शामिल करना चाहते हैं।

+0

क्यों नहीं! '///// /' ' –

+0

का उपयोग क्यों न करें, बिना किसी स्पष्टीकरण के जवाब दे सकते हैं। –

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