.gitignore निर्देशिका में फ़ाइलों को बाहर करता है, लेकिन कुछ निर्देशिकाओं को नहीं


98
application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*

यह काम नहीं कर रहा है। जब मैं प्रोजेक्ट को क्लोन करता हूं, तो कोई "application/cache"फ़ोल्डर या "application/cache/folder"फ़ोल्डर नहीं होता है , आदि ...

मुझे लगता है कि अगर कैश फ़ोल्डर में फ़ाइलें कैश नहीं की गई थीं, लेकिन फ़ोल्डर थे, ताकि फ़ोल्डर अनुमतियाँ स्थानांतरित हो जाएं और मौजूद रहें।

जवाबों:


220

Git फ़ोल्डर, केवल फ़ाइलों को ट्रैक नहीं करता है, इसलिए यदि आप किसी फ़ोल्डर में सब कुछ अनदेखा करते हैं, तो Git को ट्रैक करने के लिए कुछ भी नहीं होगा। आप एक जोड़ सकते हैं .gitignore(प्रत्येक निर्देशिका में फाइल application/cache, application/cache/folder, application/cache/folder/onemorefolder/निम्नलिखित सामग्री के साथ):

*
!.gitignore

फिर, आप उन निर्देशिकाओं को जोड़ सकते हैं, और .gitignoreप्रत्येक निर्देशिका में केवल फ़ाइल जोड़ी जाएगी - लेकिन इसका मतलब है कि अब निर्देशिकाओं को ट्रैक किया जाएगा (यानी, जब क्लोनिंग बनाया जाता है)।


7
इस उद्देश्य के लिए उपयोग की जाने वाली .ignignore फाइलें खाली हो सकती हैं।
केवपी

2
वे खाली हो सकते हैं, यदि फ़ोल्डर ऊपरी .gitignoreफ़ाइल द्वारा अनदेखा किए जाते हैं । इस मामले में, इसका सटीक मेरा उत्तर है।
किंगक्रंच

4
अधिक समझदार और सरल है। फ़ाइल को .गिति नाम की एक फ़ाइल का उपयोग करना है, फिर आपको .ignignore फ़ाइल में कुछ भी रखने की आवश्यकता नहीं है।
हेजहोग

3
@kevpie फ़ोल्डर में अन्य फाइलें हैं और वह नहीं चाहता कि उन्हें ट्रैक किया जाए। यदि .gitignore फ़ाइल खाली है, तो उन फ़ाइलों को स्पष्ट रूप से ट्रैक किया जाएगा।
मलियास

एक ही उद्देश्य के साथ, मैं के .gitkeepबजाय का उपयोग करें .gitignore। यह मेरे लिए और अधिक समझ में आता है
Tderson टी। स्ज़्ल्टाटा

22

Git खाली निर्देशिकाओं को ट्रैक नहीं करता है। जिस फोल्डर में आप कमिट होना चाहते हैं, उसमें कुछ खाली प्लेसहोल्डर फाइलें जोड़ें।

touch application/cache/.keep
git add -f application/cache/.keep

प्रत्येक "खाली" फ़ोल्डरों के साथ भी ऐसा करें। बाद में आप इन फ़ाइलों को अनदेखा कर सकते हैं, वे वास्तव में केवल यह सुनिश्चित करने के लिए मौजूद हैं कि git उन निर्देशिकाओं को क्लोन पर बनाता है। में प्रविष्टियों .gitignore(जब तक आप इसके साथ बल लगाया जा रहा से फ़ोल्डर्स में दूसरों फ़ाइलें रखता है git add -f);)।


16

ऐसा करने के लिए शायद एक और क्लीनर तरीका है। आप जिन फ़ोल्डरों को रखना चाहते हैं, उन्हें उप .ignignore फाइलें रखने के बजाय। आप इसे इस रूट में डाल सकते हैं। निम्न प्रकार से:

application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*
!*.gitkeep

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



सवाल यह था कि फ़ोल्डर्स की सामग्री को कैसे अनदेखा किया जाए, लेकिन फ़ोल्डर्स को स्वयं रखें। इसलिए मेरा मानना ​​है कि मेरा जवाब खड़ा है और बस!
जोएल डकवर्थ

3

आप इसमें से प्रत्येक में .gitignore फ़ाइल डाल सकते हैं (जैसे कि मिपाडी ने कहा) या अपनी रूट .gnnore फ़ाइल पर ऐसा कुछ बना सकते हैं।

/assets/*/
/assets/*.*

यह मेरे लिए ठीक काम करता है


यह काम करता है, लेकिन केवल अगर रेपो फ़ाइल एक्सटेंशन का उपयोग कर रहा है। जैसे कुछ root/LICENSE-FILEबाहर नहीं किया जाएगा।
ब्रेट ज़मीर

2

विजुअल स्टूडियो को स्वीकृत उत्तर पसंद नहीं आया। मुझे यह काम करने के लिए * से पहले एक नई पंक्ति को जोड़ना था।

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