GIT - .suo फ़ाइल को अनदेखा नहीं कर सकता


84

मैं C # में लिखे एप्लिकेशन में, एक सहयोगी के साथ Git का उपयोग करके काम करने की कोशिश कर रहा हूं।

हमने .gitignore फ़ाइल में "project1.suo" प्रविष्टि जोड़ी है, लेकिन जब भी हम में से किसी को परियोजना के लिए प्रतिबद्ध होता है, तो Git हमें फ़ाइल "project1.suo" के रूप में अच्छी तरह से करने के लिए कहता है।

हमने फ़ाइल को इस तरह जोड़ने के लिए कई तरीके आज़माए हैं:

*.suo
project1.suo
c:\project\project1.suo

हम इस समस्या को ठीक नहीं कर सकते।


2
क्या .gitignore फ़ाइल ही रेपो में जोड़ी गई है?
स्टीव बी

हाँ, रिपॉजिटरी में है
लदेदुर

3
मुझे लगता है कि फ़ाइल को एक बार जोड़ दिया गया है, इस फ़ाइल पर एक git rm को स्पष्ट रूप से आज़माएं, देखें और देखें कि क्या यह अभी भी जोड़ा फ़ाइल के रूप में सुझाया गया है।
स्टीव बी

क्या आप मुझे बता सकते हैं कि मैं कमांड आरएम का उपयोग कैसे कर सकता हूं, क्योंकि मैंने कोशिश की थी, लेकिन कमांड कैंट ने फाइल नहीं ढूंढी ...
लैदेदुर

@SteveB .gitignore को प्रभावी होने के लिए रिपॉजिटरी में जोड़ना नहीं है।
इक्के

जवाबों:


165

git उन फ़ाइलों को अनदेखा नहीं करता है जिन्हें रिपॉजिटरी में जोड़ा गया है। यदि आप इसे अनदेखा करना चाहते हैं, तो आपको फ़ाइल को रिपॉजिटरी से हटाना होगा:

git rm --cached project1.suo
git commit -m "Delete suo file from repository"

यह फ़ाइल को रिपॉजिटरी से हटा देगा, जबकि यह अभी भी आपके हार्डड्राइव पर है।


यदि आप * .su फ़ाइलों को rm करते हैं, तो निश्चित रूप से यह उन फ़ाइलों को दूरस्थ रूप से धकेलने वाला नहीं है। क्या यह उस व्यक्ति के लिए समस्या का कारण होगा जो इस परियोजना को क्लोन करता है?
वकास

यदि आप विज़ुअल स्टूडियो क्लाइंट का उपयोग कर रहे हैं, तो ऐसा करने का कोई तरीका नहीं है, आपको cmd शेल का उपयोग करना होगा। लेकिन अगर मैं शेल से rm कमांड का उपयोग करता हूं, तो मैं एक स्ट्राइकथ्रू के साथ .so फाइल देखूंगा, लेकिन अगर मैंने वीएस यूआई के माध्यम से परिवर्तन किया है, तो यह फिर से दिखाई देगा। आपको कमांड-लाइन के माध्यम से ऊपर दोनों कमांड करना होगा।
माइकल ब्लैकबर्न

1
@Aaqas नहीं, दृश्य स्टूडियो उनके लिए एक नई फ़ाइल बनाएगा। ऐसा तब होता है जब * .ignignore * .so को छोड़कर रिपॉजिटरी के हिस्से के रूप में महत्वपूर्ण है। जब वे प्रतिबद्ध होते हैं, तो .itignore ने उनकी जाँच की (उन्हें कम से कम उन्हें हतोत्साहित करने से रोकेंगे) अपनी SUO फ़ाइल में जाँच करने से रोकेंगे।
माइकल ब्लैकबर्न

3
यह कुछ नए लोगों के लिए स्पष्ट नहीं हो सकता है। इसने एकदम जादू की तरह काम किया। इस कमांड को निष्पादित करने के लिए, आपको उस फ़ोल्डर के अंदर होना चाहिए जहां .suo स्थित है। पहले कमांड जिसे आपको cmd। छिपी हुई फ़ाइलें आपके रिपॉजिटरी फ़ोल्डर रूट में सक्षम होती हैं। मेरी फ़ाइल में प्रोजेक्ट का नाम नहीं था। बस एक्सटेंशन। git rc --cached .suo git कमिट -m "रिपॉजिटरी से सू फाइल को डिलीट करें"
moto_gex

यदि फ़ोल्डर को अनदेखा करने की आवश्यकता है, और यह पहले से ही दूरस्थ रेपो में है। उपयोग -r ऑप्शन इन कमांड, git rm -r - cached <path to folder>
Somnath Kadam

3

मैं हमेशा इस सवाल का जवाब में विधि का उपयोग करने के लिए वापस करता हूं, लेकिन मुझे एक बेहतर समाधान मिला जो इस फ़ाइल में परिवर्तनों को अनदेखा करना है। विधि है

git update-index --assume-unchanged project1.suo

या

git update-index --assume-unchanged .vs/config/applicationhost.config

इस प्रयोग को पूर्ववत करने के लिए - कोई मान नहीं-अपरिवर्तित


मुझे एक संदेश मिलता है "घातक: फ़ाइल को चिह्नित करने में असमर्थ वेब <निर्देशिका> / <filetoexclude>"
dancerjude

ध्यान दें कि यह उन मुद्दों को जन्म देगा जब कोई फ़ाइल को अपडेट करता है। Git फ़ाइल को अपडेट करने का प्रयास करेगा, लेकिन नोटिस इसे बदल चुका है और आपको एक त्रुटि संदेश देगा। किसी भी मामले में, --skip-worktreeसे बेहतर है --assume-unchanged, जिसका उपयोग केवल प्रदर्शन कारणों के लिए किया जाना चाहिए।
Ikke

-4

मुझे भी यही समस्या थी। इक्के का हल मदद करता है, लेकिन * .ignignore से * .so प्रविष्टि को हटाना न भूलें, अगर यह वहां है। फ़ाइल ठीक होने के बाद, करें

git add **/*.suo

1
.Su को ओपी की आवश्यकताओं को पूरा करने के लिए .ignignore से हटाया नहीं जाना चाहिए।
कलस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.