मैंने निम्नलिखित पंक्ति को इसमें जोड़ा .gitignore
:
sites/default/settings.php
लेकिन जब मैं टाइप git status
करता हूं तो यह फाइल को अनस्टेज्ड फाइल के रूप में दिखाता है।
समस्या क्या है? अन्य सभी पैटर्न अच्छी तरह से काम करते हैं।
मैंने निम्नलिखित पंक्ति को इसमें जोड़ा .gitignore
:
sites/default/settings.php
लेकिन जब मैं टाइप git status
करता हूं तो यह फाइल को अनस्टेज्ड फाइल के रूप में दिखाता है।
समस्या क्या है? अन्य सभी पैटर्न अच्छी तरह से काम करते हैं।
जवाबों:
सुनिश्चित करें कि आपके बनाओ .gitignore
कार्यशील निर्देशिका की जड़ में है, और उस निर्देशिका समय में git status
और कॉपी स्थिति उत्पादन से फ़ाइल का पथ और इसे में पेस्ट .gitignore
।
यदि वह काम नहीं करता है, तो संभावना है कि आपकी फ़ाइल Git द्वारा पहले ही ट्रैक कर ली गई है। के आउटपुट के माध्यम से आप इसकी पुष्टि कर सकते हैं git status
। यदि फ़ाइल "अनट्रैक की गई फ़ाइलों" खंड में सूचीबद्ध नहीं है , तो यह पहले से ही गिट द्वारा ट्रैक किया गया है और यह .gitignore
फ़ाइल से नियम की अनदेखी करेगा ।
Git में फ़ाइलों को अनदेखा करने का कारण यह है कि उन्हें रिपॉजिटरी में नहीं जोड़ा जाएगा। यदि आपने पहले कोई फ़ाइल जोड़ी है जिसे आप अनदेखा करना चाहते हैं, तो इसे Git द्वारा ट्रैक किया जाएगा और मेल खाने वाले नियमों को अनदेखा किया जाएगा। Git ऐसा करता है क्योंकि फ़ाइल पहले से ही रिपॉजिटरी का हिस्सा है।
वास्तव में फ़ाइल को अनदेखा करने के लिए, आपको इसे अनट्रैक करना होगा और इसे रिपॉजिटरी से निकालना होगा। का उपयोग करके आप ऐसा कर सकते हैं git rm --cached sites/default/settings.php
। यह फ़ाइल को भौतिक रूप से हटाने के बिना रिपॉजिटरी से फ़ाइल को हटा देता है (यही --cached
है)। उस परिवर्तन को करने के बाद, फाइल को रिपॉजिटरी से हटा दिया जाएगा, और इसे अनदेखा करना ठीक से काम करना चाहिए।
.git
निर्देशिका स्थित है और जो स्वयं भंडार है। जैसे जब आप एक रिपॉजिटरी का क्लोन बनाते हैं, /xy/
तो /xy/
आपकी वर्किंग डायरेक्टरी /xy/.git/
अंदर से होती है।
git add .
बाद भी करने की आवश्यकता होगी git rm --cached
।
मैं इसमें शामिल हूं, यह एक पुराना सवाल है, लेकिन मैं चाहता हूं कि उस फाइल को ट्रैक किया जाए, लेकिन इसे कुछ निश्चित प्रतियों पर ट्रैक नहीं किया जाए, ताकि आप इसे चला सकें
git update-index --assume-unchanged sites/default/settings.php
.ITignore केवल उन फ़ाइलों को अनदेखा करेगा, जिन्हें आपने अपनी रिपॉजिटरी में पहले से नहीं जोड़ा है।
यदि आपने किया git add .
, और फ़ाइल इंडेक्स में जुड़ गई, तो .ignignore आपकी मदद नहीं करेगा। आपको इसे git rm sites/default/settings.php
हटाने के लिए करने की आवश्यकता होगी , और फिर इसे अनदेखा किया जाएगा।
git rm
ऐसा करना चाहिए, लेकिन यह आपको -f विकल्प का उपयोग करने के लिए कह सकता है जो इसे कार्यशील निर्देशिका से हटा देगा। मैंने यह पता नहीं लगाया है कि फ़ाइल की एक प्रतिलिपि बनाने के अलावा, कॉपी को git rm -f
पुनर्स्थापित करें।
कृपया इस कमांड का उपयोग करें
git rm -rf --cached .
git add .
कभी-कभी .gitignore फाइलें सही होने के बावजूद काम नहीं करती हैं। Git फ़ाइलों को अनदेखा करने का कारण यह है कि उन्हें रिपॉजिटरी में नहीं जोड़ा जाता है। यदि आपने कोई ऐसी फ़ाइल जोड़ी है जिसे आप पहले अनदेखा करना चाहते हैं, तो इसे Git द्वारा ट्रैक किया जाएगा, और किसी भी मेल खाने वाले नियम को छोड़ दिया जाएगा। गिट ऐसा करता है क्योंकि फ़ाइल पहले से ही रिपॉजिटरी का हिस्सा है।
मुझे भी यही समस्या थी। फ़ाइलों को परिभाषित किया गया है .gitingore
जहाँ चलाने के दौरान अनटैक की गई फ़ाइलों के रूप में सूचीबद्ध किया गया है git status
।
कारण यह था कि .gitignore
फ़ाइल UTF-16LE
एन्कोडिंग में सहेजी गई थी , और UTF8
एन्कोडिंग में नहीं ।
.gitignore
फ़ाइल के एन्कोडिंग को बदलने के बाद UTF8
इसने मेरे लिए काम किया।
क्या मैं अनदेखी करने के लिए यह किया settings.php फ़ाइल सफलतापूर्वक:
मुझे लगता है कि अगर वहाँ Git पर प्रतिबद्ध फ़ाइल है तो अनदेखा करना अपेक्षित रूप से काम नहीं करता है। बस फाइल को डिलीट करें और कमिट करें। बाद में इसे अनदेखा करेंगे।
ऐसे उदाहरण हैं जैसे कि एप्लिकेशन कॉन्फ़िगरेशन फाइलें, जो मैं git में ट्रैक करना चाहता हूं (ताकि .ignignore काम नहीं करेगा), लेकिन मुझे स्थानीय सेटिंग्स के लिए बदलने की आवश्यकता है। मैं इन फ़ाइलों को प्रबंधित करने या उन्हें संशोधित के रूप में दिखाने के लिए गिट नहीं चाहता। ऐसा करने के लिए मैं स्किप-वर्कट्री का उपयोग करता हूं:
git update-index --skip-worktree path/to/file
आप पुष्टि कर सकते हैं कि फाइलों को सूचीबद्ध करके और स्केप के लिए S से शुरू होने वाली लाइनों की जाँच करके फ़ाइलों को छोड़ दिया जाता है
git ls-files -v | grep ^S
यदि भविष्य में आप चाहते हैं कि स्थानीय रूप से फ़ाइल को फिर से प्रबंधित करें तो बस चलाएं:
git update-index --no-skip-worktree path/to/file
ऊपर मेस्कालिटो का शानदार जवाब था, जिसने मुझे सही रास्ते पर ले जाया लेकिन
git update-index --assume-अपरिवर्तित फ़ाइल / to / ign.php
Git के साथ एक अनुबंध किया गया है जिसमें: उपयोगकर्ता फ़ाइल को नहीं बदलने का वादा करता है और Git को यह मानने की अनुमति देता है कि कार्यशील ट्री फ़ाइल उस सूची से मेल खाती है जो सूचकांक में दर्ज की गई है।
हालांकि, मैं फ़ाइलों की सामग्री को बदल देता हूं, इसलिए मेरे मामले में --स्काइप-वर्कट्री बेहतर विकल्प है।
तोशारू निशिना की वेबसाइट ने स्किप-वर्कट्री बनाम धारणा-अपरिवर्तित की एक उत्कृष्ट व्याख्या प्रदान की: स्थानीय रूप से गिट के साथ पहले से प्रबंधित फ़ाइलों को अनदेखा करें
एक अन्य संभावित कारण - एक ही समय में चलने वाले गिट क्लाइंट के कुछ उदाहरण । उदाहरण के लिए "गिट शेल" + "गिटहब डेस्कटॉप", आदि।
यह मेरे साथ हुआ, मैं मुख्य ग्राहक के रूप में "गिटहब डेस्कटॉप" का उपयोग कर रहा था और यह कुछ नई .itignore सेटिंग्स की उपेक्षा कर रहा था: प्रतिबद्ध होने के बाद।
कारण : विजुअल स्टूडियो कोड एडिटर पृष्ठभूमि में उसी खोले गए भंडार के साथ चल रहा था। वीएस कोड में अंतर्निहित नियंत्रण है, और यह कुछ संघर्ष करता है।
समाधान : कई, छिपे हुए गिट क्लाइंटों की दोबारा जांच करें और एक बार में केवल एक जीआईटी ग्राहक का उपयोग करें, विशेषकर गिट कैश को साफ करते समय।
सुनिश्चित करें। .ignignore में एक्सटेंशन नहीं है !! यह नहीं हो सकता है। .ignignore.txt, विंडोज़ में सिर्फ फ़ाइल का नाम है। और यह काम करेगा।
मैंने सिर्फ 1.7.3.1 git के साथ यह कोशिश की, और एक संरचना दी:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
repo
इस प्रकार जहां "रूट" ऊपर उल्लेख किया गया है (मैं इसे आपके काम करने वाले पेड़ की जड़ कहूंगा), और .gitignore
इसमें केवल शामिल है sites/default/settings.php
, मेरे लिए इग्निशन काम करता है (और इससे कोई फर्क नहीं पड़ता कि .gitignore
रेपो में जोड़ा जाता है या नहीं)। क्या यह आपके रेपो लेआउट से मेल खाता है? यदि नहीं, तो क्या अलग है?
बस अगर भविष्य में किसी को वही समस्या होती है जो मैंने की थी:
यदि आप उपयोग करते हैं
*
!/**/
!*.*
बिना एक्सटेंशन वाली बाइनरी फ़ाइलों को हटाने के लिए ट्रिक, सुनिश्चित करें कि अन्य सभी gitignore लाइनें BELOW हैं। Git ऊपर से .gitignore से पढ़ेगा, इसलिए भले ही मेरे पास मेरे gitignore में 'test.go' था, यह पहली बार फाइल में था, और इसके बाद 'unignored' बन गया
!*.*
मैंने वीएस कोड टर्मिनल पर ऊपर की अधिकांश कमांड की कोशिश की और मुझे त्रुटियां मिलीं जैसे:
fatal: pathspec '[dir]/[file]' did not match any files
मैंने GitHub डेस्कटॉप पर प्रोजेक्ट खोला और वहाँ से अनदेखा किया और यह काम किया।