उन फ़ाइलों को कैसे अनदेखा करें जो रिपॉजिटरी में हैं?


93

मेरे पास एक फ़ाइल (config.php) है, जो पहले से ही गिट रिपॉजिटरी के लिए प्रतिबद्ध है, लेकिन मैं स्थानीय रूप से अनदेखा करना चाहता हूं, यानी मैं चाहता हूं कि फाइल रिपॉजिटरी में बनी रहे, लेकिन इसके लिए किसी भी बदलाव को अनदेखा करने के लिए बाध्य करें।

मैंने फ़ाइल को .ignignore में डाल दिया है, लेकिन यह अभी भी परिवर्तित के रूप में चिह्नित है और Git अभी भी इसमें परिवर्तन करने का प्रयास कर रहा है, हर बार जब मैं कुछ करता हूं। कोई भी विचार, मैं क्या याद कर रहा हूं या गलत कर रहा हूं?


कृपया अपनी .gitignore-file जोड़ें - इस तरह हम इसके बारे में कोई समस्या देख सकते हैं।
लार्स

जवाबों:


189

यदि फ़ाइल अभी भी स्थिति में प्रदर्शित है, भले ही यह .ignignore में है, सुनिश्चित करें कि यह पहले से ही ट्रैक नहीं है।

git rm --cached config.php

यदि आप इसे स्थानीय रूप से अनदेखा करना चाहते हैं, तो आप इसे git स्टेटस द्वारा अनदेखा भी कर सकते हैं:

git update-index --assume-unchanged config.php

1
ठीक है धन्यवाद ! अगर मैं अपनी शाखा को किसी अन्य के साथ मर्ज करता हूं, तो क्या यह फ़ाइल कुछ समस्याएं पैदा कर सकती है?
प्रिंकेन

1
@ Nimbus147: यह कोई समस्या नहीं होनी चाहिए, और उस फ़ाइल पर किसी भी परिवर्तन को अभी भी अनदेखा किया जाएगा (यानी जोड़ा / प्रतिबद्ध नहीं)।
VonC

अगर स्मार्टगिट का उपयोग करते हैं, तो आपको ऐसा करने के लिए हटाने का उपयोग करना चाहिए।
ओमिड-आरएच

1
क्या update-index --assume-unchangedदूरस्थ शाखा पर बल देने का कोई तरीका है ? मैं फ़ाइल को रेपो में रखना चाहूंगा, लेकिन दूसरों द्वारा परिवर्तित नहीं किया जा सकता है, लेकिन मंच पर उपलब्ध नहीं है।
1

1
@ p014k नहीं कि मुझे पता है। उस तरह की फ़ाइल के लिए, मैं इसे एक अलग नाम के तहत संस्करणित रखता हूं, फिर जरूरत पड़ने पर सही फ़ाइल (निजी) उत्पन्न करने के लिए एक सामग्री फ़िलर ड्राइवर का उपयोग करें। यह फ़िल्टर उदाहरण के लिए मंच पर सक्रिय नहीं होगा। Stackoverflow.com/a/54454356/6309 और इससे संबंधित लिंक देखें ।
VonC

6

फ़ाइल में अनदेखा:

git update-index --assume-unchanged file

वापस लौटने के लिए

git update-index --no-assume-unchanged file

सब वापस कर दो

git update-index --really-refresh 

सहायक। एक फ़ाइल पर वापस लौटें, लेकिन सभी को वापस कर दें, हालांकि नहीं।
टेप

4

यदि फ़ाइल पहले से ही रिपॉजिटरी में है, और इसलिए इंडेक्स / स्टेजिंग क्षेत्र, तो .itignore के लिए एक अद्यतन उस स्थिति को नहीं बदलेगा - यह प्रतिबद्ध रहेगा।

फ़ाइल को इंडेक्स / स्टेजिंग क्षेत्र के उपयोग से हटाने के लिए git rm <file>


क्या होगा अगर फाइल रिपॉजिटरी में है लेकिन अभी तक इसका मंचन नहीं हुआ है? मैं * .log फ़ाइलों को अनदेखा करने की कोशिश कर रहा हूं, लेकिन मैं अभी भी उन्हें "परिवर्तन" के तहत देखता हूं। मैं सभी को अनदेखा करना चाहता हूं, क्या करना है?
सांड्रा के

@SandraK यदि उस फ़ाइल का कोई पुराना संस्करण (फ़ाइलपाठ / नाम) पहले से ही अंतिम बार रेपो में है, तो इसे ट्रैक माना जाता है - 'इंडेक्स' में वह फ़ाइल उसके रिकॉर्ड में statusहोगी , और इसलिए आपको बताना जारी रहेगा उन परिवर्तनों के बारे में। यदि आप * .log फ़ाइलों को अनदेखा करना चाहते हैं, तो पहले से निपटने के लिए और वर्तमान में अनियंत्रित fles दोनों के लिए, तो आपको git rm *.logअपनी .gitignore फ़ाइल को अपडेट और अपडेट करने की आवश्यकता है । पहले जांचें कि क्या कुछ लॉग फाइलें वास्तव में महत्वपूर्ण हैं ... उस विशेष को भूलना आसान है ;-)
फिलिप ओकले

-3

एक बार जब कोई फ़ाइल .gitignore में सूचीबद्ध हो जाती है तो आप उसे बदल नहीं सकते।

तो आप फ़ाइल को एक कमेटी में सूची से हटा सकते हैं, अगला परिवर्तन कर सकते हैं, फिर बाद में तीसरी सूची में फ़ाइल को अनदेखा सूची में फिर से जोड़ सकते हैं।

मैं आमतौर पर फ़ाइल को दो में विभाजित करता हूं, एक जिसे अनुमति दी जाती है और मैं बदल सकता हूं, जिसमें दूसरी फ़ाइल शामिल है यदि यह मौजूद है, तो देवता अनदेखा फ़ाइल में वैकल्पिक रूप से कॉन्फ़िगर परिवर्तन कर सकते हैं।


1
" एक बार जब कोई फ़ाइल सूचीबद्ध हो जाती है, तो .ignignore में आप इसे बदल नहीं सकते " - क्या आप स्पष्ट कर सकते हैं, आपका क्या मतलब है? मेरे पास बहुत सारी फाइलों में बहुत सी फाइलें हैं.gitignore और मैं लगातार इन फाइलों को बदल रहा हूं! यह पहली बार है, मैंने किसी को यह कहते हुए सुना, कि मैं एक बार फ़ाइल जोड़ दूं .gitignore, तो मैं इसे बदल नहीं सकता।
ट्रेडर

1
वह वास्तव में गलत है। आप उन्हें बदल सकते हैं। Git बस उन्हें अपलोड नहीं करता है, या यहां तक ​​कि आपको उन्हें अपलोड करने का विकल्प भी देता है।
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.