[ नोट : यह सामान्य नहीं है "Git अभी भी उन फ़ाइलों को ट्रैक करता है जिन्हें मैंने अभी जोड़ा गया है। .ignignore!" संकट। यह उसी के विपरीत है।]
मेरे पास Git रिपॉजिटरी में वेबसाइट की पूर्ण निर्देशिका संरचना है। CMS I का उपयोग डिफ़ॉल्ट रूप से .gitignore फ़ाइल के साथ आता है:
# Ignore paths that contain user-generated content.
sites/*/files/
sites/*/private/
ध्यान दें कि सभी साइट / * / फ़ाइल निर्देशिका को बाहर रखा गया है। लेकिन जिस तरह से मैं अपनी साइटें करता हूं, उसमें एक विशेष सबफ़ोल्डर है जिसे मैं रेपो में शामिल करना चाहता हूं। इसलिए उपरोक्त .OPignore के साथ अपना रेपो शुरू करने के बाद, मैंने इसे इसमें संशोधन किया:
# Ignore paths that contain user-generated content.
sites/*/files/
!sites/*/files/content/
!sites/*/files/content/*
sites/*/private/
मेरी समझ से, मेरे द्वारा ऊपर जोड़े गए नकारात्मक पैटर्न का मतलब यह होना चाहिए कि साइटें / * / फ़ाइलें / सामग्री / और इसकी सामग्री रेपो में शामिल हैं, लेकिन बाकी साइटों / * / फ़ाइलों को अनदेखा किया गया है। और जब मैं अपना पहला कमिट करने से पहले अपनी .gitignore फाइल को अपडेट करना याद करता हूं, तो यह योजनाबद्ध तरीके से काम करता है।
लेकिन जब मैं बाद में .gitignore को अपडेट करना भूल जाता हूं, जैसा कि मैं करने के लिए अभ्यस्त हूं, तो मुझे .itignore फ़ाइल को पूरी तरह से अनदेखा करने के लिए मजबूर किए बिना नई फ़ाइलों को जोड़ने के लिए Git नहीं मिल सकता है। मैं इसे चलाता हूं:
> git add sites/default/files/content/
और इसे वापस प्राप्त करें:
The following paths are ignored by one of your .gitignore files:
sites/default/files
Use -f if you really want to add them.
fatal: no files added
क्यों हाँ, Git, उस निर्देशिका को .gitignore के लाइन 2 पर ध्यान नहीं दिया गया है, लेकिन लाइनों 3 और 4 में उस विशिष्ट फ़ोल्डर के लिए एक अपवाद बनाने के लिए कहा गया है, जिसके बारे में मैंने आपसे पूछा था!
मुझे पता है कि मैं इसे सीधे जोड़ने के लिए -f का उपयोग कर सकता हूं, लेकिन फिर मुझे इसे फिर से किसी भी भावी प्रतिबद्ध पर करना होगा जो उस निर्देशिका में फ़ाइलों को जोड़ता है।
पृष्ठ नहीं है सब से अधिक वेब कि कैसे अद्यतन करने .gitignore Git पहले से ही ट्रैक फ़ाइलों की अनदेखी नहीं कर सकता के बारे में बात है, लेकिन मैं कुछ भी है कि के बारे में यह कैसे Git नव अपवादित फ़ाइलों को ट्रैक नहीं है बात करती है नहीं मिल रहा।
बहुत सी जगहों का कहना है कि git update-index
इस तरह की समस्याओं को हल करने के लिए इस्तेमाल किया जा सकता है, लेकिन मैं इसे मेरे लिए काम करने के लिए प्रतीत नहीं कर सकता। इसके बारे में एक लाख संभव झंडे हैं, इसलिए शायद मैं सही एक (या कई के संयोजन) पर ठोकर नहीं खाई।
TL; DR : मैं अपनी .itignore फ़ाइल में Git को नए बहिष्करण कैसे बना सकता हूं?
sites/*/files/*
, और सब कुछ अब बढ़िया काम करता है। धन्यवाद!