यदि आपके Mac पर Git किसी फ़ाइल को अनदेखा (ignore) कर रहा है, तो टर्मिनल में रिपॉजिटरी से git check-ignore -v -- 'path/to/file' चलाएं। आउटपुट इग्नोर स्रोत, लाइन नंबर, मैचिंग पैटर्न और पाथ की पहचान करता है, जिससे आप नियम ढूंढ सकते हैं और यह तय कर सकते हैं कि इसे बदलना है या नहीं। यदि फ़ाइल पहले से ही ट्रैक की जा रही है, तो --no-index के साथ जाँच को दोहराएं।
रिपॉजिटरी से जाँच चलाएं
टर्मिनल खोलें और रिपॉजिटरी की टॉप-लेवल डायरेक्टरी में जाएं। आप बाद में एक स्पेस के साथ cd टाइप कर सकते हैं, उसका पाथ डालने के लिए फ़ाइंडर से प्रोजेक्ट फ़ोल्डर को टर्मिनल विंडो में खींच (drag) सकते हैं, फिर Return दबाएं। git status के साथ पुष्टि करें कि आप Git वर्किंग ट्री में हैं; यदि Git रिपोर्ट करता है कि डायरेक्टरी एक रिपॉजिटरी नहीं है, तो पहले प्रोजेक्ट के वास्तविक रिपॉजिटरी फ़ोल्डर में जाएं।
रिपॉजिटरी रूट के सापेक्ष फ़ाइल के पाथ का उपयोग करें। उदाहरण के लिए, build/cache.json का निदान करने के लिए, चलाएं:
git check-ignore -v -- 'build/cache.json'
सिंगल कोट्स डिफ़ॉल्ट macOS शेल, zsh के लिए पाथ को शाब्दिक (literal) बनाते हैं। वे विशेष रूप से तब उपयोगी होते हैं जब किसी नाम में स्पेस या * जैसे वर्ण होते हैं जिन्हें शेल अन्यथा व्याख्यायित कर सकता है। -- विकल्पों के अंत को चिह्नित करता है, जो हाइफ़न से शुरू होने वाले पाथ को फ़्लैग के रूप में माने जाने से भी रोकता है।
नियम का पता लगाने के लिए आउटपुट पढ़ें
एक वर्बोज़ (verbose) मैच इस प्रकार दिखता है:
.gitignore:12:build/ build/cache.json
फ़ील्ड का अर्थ है: .gitignore स्रोत फ़ाइल है, 12 इसका लाइन नंबर है, build/ पैटर्न है, और build/cache.json वह पाथ है जिसके बारे में आपने पूछा था। उस स्रोत फ़ाइल को अपने पसंदीदा टेक्स्ट एडिटर में खोलें और रिपोर्ट की गई लाइन का निरीक्षण करें। स्रोत इसके बजाय एक नेस्टेड .gitignore, .git/info/exclude, या आपके Git खाते के लिए कॉन्फ़िगर की गई एक ग्लोबल एक्सक्लूड फ़ाइल हो सकती है। Git वर्बोज़ आउटपुट फ़ील्ड और इन इग्नोर स्रोतों का दस्तावेजीकरण करता है।
.git/info/exclude के तहत एक स्रोत पाथ इस रिपॉजिटरी पर लागू होता है लेकिन सामान्य रूप से अन्य क्लोन के साथ साझा नहीं किया जाता है। एक ग्लोबल एक्सक्लूड फ़ाइल आपकी अपनी रिपॉजिटरीज़ पर लागू होती है। एक .gitignore पैटर्न आम तौर पर उस नियम के लिए सही जगह है जिसे प्रोजेक्ट को साझा करना चाहिए। Git प्राथमिकता के आधार पर इग्नोर स्रोतों की जाँच करता है: निचले स्तर की .gitignore फ़ाइलें पैरेंट नियमों को ओवरराइड कर सकती हैं, और समान प्राथमिकता स्तर पर अंतिम मेल खाने वाला पैटर्न परिणाम निर्धारित करता है। The gitignore मैनुअल प्रत्येक स्रोत की प्राथमिकता और इच्छित उपयोग की व्याख्या करता है।
यदि Git कुछ भी प्रिंट नहीं करता है
कोई आउटपुट न होने का आमतौर पर मतलब है कि कोई भी इग्नोर पैटर्न उस पाथ से मेल नहीं खाता। कमांड का सामान्य आउटपुट अनदेखा किए गए (ignored) पाथ को सूचीबद्ध करता है; निर्णायक पैटर्न देखने के लिए -v का उपयोग करें। जाँचें कि आप सही रिपॉजिटरी में हैं और पाथ की स्पेलिंग और कैपिटलाइज़ेशन सटीक हैं।
ट्रैक की गई फ़ाइलें भ्रम का एक सामान्य स्रोत हैं: डिफ़ॉल्ट रूप से, git check-ignore उनकी रिपोर्ट नहीं करता है क्योंकि इग्नोर नियम उन फ़ाइलों पर लागू होते हैं जो पहले से ट्रैक नहीं की जा रही हैं। Git को नियमों की जाँच करने के लिए कहने के लिए --no-index जोड़ें:
git check-ignore -v --no-index -- 'build/cache.json'
यह विकल्प नियम का निदान करता है; यह फ़ाइल को अनट्रैक नहीं करता है या इसे कमिट से नहीं हटाता है। ट्रैकिंग रोकने के लिए Git की प्रलेखित विधि git rm --cached है, जिसके बाद एक उपयुक्त इग्नोर नियम आता है। यह इंडेक्स को बदलता है, इसलिए इसे चलाने से पहले स्थिति का निरीक्षण करें और इसके प्रभाव को समझें। Git ट्रैक की गई फ़ाइल की सीमा और --no-index विकल्प की व्याख्या करता है।
नेगेशन (निषेध) और पैटर्न का दायरा जांचें
! से शुरू होने वाली मेल खाने वाली लाइन एक नेगेशन (निषेध) है: यह पहले के इग्नोर पैटर्न के बाद किसी पाथ को वापस दृश्य में ला सकती है, इसलिए ऐसी लाइन से वर्बोज़ मैच का मतलब यह नहीं है कि फ़ाइल अनदेखी ही रहेगी। यदि कोई पैरेंट डायरेक्टरी बाहर रखी गई है (excluded), तो Git किसी फ़ाइल को फिर से शामिल नहीं कर सकता है; पैरेंट डायरेक्टरी को पहले मैचिंग नियमों के माध्यम से पारगम्य (traversable) बनाया जाना चाहिए। Git का पैटर्न दस्तावेज़ नेगेशन और इस पैरेंट-डायरेक्टरी सीमा का वर्णन करता है।
पैटर्न की व्याख्या उस .gitignore फ़ाइल के सापेक्ष की जाती है जिसमें वे शामिल हैं। स्लैश वाले पैटर्न का दायरा उस फ़ाइल के डायरेक्टरी स्तर तक सीमित होता है; एक साधारण नाम पैटर्न उस स्तर और उसके नीचे मेल खा सकता है। यह तब मायने रखता है जब कोई नियम किसी नेस्टेड .gitignore से आता है: प्रिंट किया गया पैटर्न सही दिख सकता है जबकि वह अपेक्षा से भिन्न सबट्री पर लागू हो रहा हो। स्रोत फ़ाइल के स्थान के साथ-साथ पैटर्न टेक्स्ट की भी जाँच करें।
एक फ़ाइल के लिए, यह पहचानने के लिए कि कहाँ देखना है, आमतौर पर git check-ignore -v पर्याप्त होता है। ट्रैक की गई फ़ाइल के लिए, --no-index शामिल करें; उसके बाद, यह निर्धारित करने के लिए रिपोर्ट किए गए स्रोत, लाइन और पैटर्न का उपयोग करें कि क्या नियम को बदला जाना चाहिए, संकीर्ण किया जाना चाहिए, या उसी स्थान पर छोड़ दिया जाना चाहिए।