.itignore में जोड़ने के बाद git अभी भी फाइलों को संशोधित करता है


252

मैं इसे .gitignore फ़ाइल में जोड़ रहा हूँ

.idea/*

लेकिन वैसे भी स्थिति है:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

मैं क्या गलत कर रहा हूं ? मैंने भी .idea / * को वैश्विक रूप से जोड़ा ~ / .itignore_global लेकिन git स्थिति, वैसे भी मुझे दिखाता है:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

जवाबों:


422

आपका .gitignoreकाम कर रहा है, लेकिन यह अभी भी फाइलों को ट्रैक करता है क्योंकि वे पहले से ही सूचकांक में थे।

इसे रोकने के लिए आपको करना होगा: git rm -r --cached .idea/

जब आप .idea/निर्देशिका करते हैं तो आपके गिट रिपॉजिटरी से निर्देशिका हटा दी जाएगी और निम्नलिखित कमिट .idea/निर्देशिका को अनदेखा कर देंगे ।

पुनश्च: आप एक निर्देशिका को अनदेखा करने के .idea/बजाय उपयोग कर सकते हैं .idea/*। आप पर पैटर्न के बारे में अधिक जानकारी प्राप्त कर सकते .gitignore आदमी पेज


git-rmमैन पेज से उपयोगी उद्धरण

--cached
    Use this option to unstage and remove paths only from the index. 
    Working tree files, whether modified or not, will be left alone.

क्या आप कृपया बताएंगे कि आपका क्या मतलब है "बस जोड़ना।। काम करना / भी काम करेगा"। क्या यह उपयोग करने .gitignoreऔर फिर करने का एक वैकल्पिक समाधान है git rm -cached?
मेहरद

3
@ मेहरद को *
.गरिग्नोर

2
नहीं, सिर्फ जोड़ने .idea / काम नहीं करता है, क्योंकि जैसे आपने उत्तर में कहा था, यह पहले से ही सूचकांक में है।
हेनरिक डी सूसा

15
तो आप कह रहे हैं कि commitकैश की गई फ़ाइलों को हटाने के बाद आपको क्या करना चाहिए ? जो वास्तव में प्रति-सहज लगता है; ये ऐसी फाइलें हैं जिन्हें मैं कमिट नहीं करना चाहता। और मैं उन्हें रिपॉजिटरी से डिलीट नहीं करना चाहता (मैं बस चाहता हूं कि अब वे मेरी टांग अड़ाते हुए लटक न जाएं git status)। या मैं वास्तव में भ्रमित हूँ?
स्कॉट बिग्स

6
उनकी फाइलें पहले से ही कमिट होने के कारण git द्वारा ट्रैक की गई थीं, इसलिए उन्हें हटाने के लिए, आपको एक नई कमिट बनानी होगी जो उन्हें रिपॉजिटरी से हटाती है।
जूल

47

उन लोगों के लिए जो अभी भी इस समस्या को खोज रहे हैं, केवल इस पृष्ठ को देख रहे हैं।

यह आपको कैश्ड इंडेक्स फ़ाइलों को हटाने में मदद करेगा, और उसके बाद ही अपनी ज़रूरतों को जोड़ें, जिसमें आपकी .gitignoreफ़ाइल में बदलाव भी शामिल हैं ।

1. git rm -r --cached .  
2. git add .
3. git commit -m 'Removing ignored files'

यहाँ थोड़ा और अधिक जानकारी है।

  1. यह कमांड सभी कैश्ड फाइलों को इंडेक्स से हटा देगा।
  2. यह कमांड उन सभी फाइलों को जोड़ेगी, जिनके बारे में बताया गया है gitignore
  3. यह आदेश आपकी फ़ाइलों को फिर से प्रतिबद्ध करेगा और उन फ़ाइलों को हटा देगा जिन्हें आप अनदेखा करना चाहते हैं, लेकिन उन्हें अपनी स्थानीय निर्देशिका में रखें।

1
यह मेरे लिए उपयोगी था, मैं सिर्फ इस बात पर ध्यान दूंगा कि विंडोज़ में cmd ​​# 3 में काम नहीं करता है। Git प्रतिबद्ध -am "उपेक्षित फ़ाइलों को हटाना" का उपयोग करना, हालांकि काम करता है।
सनडांस

1
कोई चिंता नहीं है, और स्पष्ट और संक्षिप्त जवाब के लिए फिर से धन्यवाद।
Sundance.101

1
यह समाधान वास्तव में मेरी परियोजना फाइलों के साथ खिलवाड़ है। मुझे ऐसा करने के बाद सब कुछ वापस करना पड़ा।
फातमाजक

1

यहाँ और अन्य स्थानों पर दिए गए समाधान मेरे लिए कारगर नहीं थे, इसलिए मैं भविष्य के पाठकों के लिए चर्चा में शामिल करूँगा। मैंने स्वीकार किया कि अभी तक इस प्रक्रिया को पूरी तरह से समझा नहीं है, लेकिन आखिरकार मेरी (समान) समस्या को हल कर दिया है और साझा करना चाहते हैं।

Windows 10 पर IntelliJ IDEA में git के साथ काम करने के दौरान और कई बार उन्हें .gitignore(और PROBABLY उन्हें थोड़ा इधर-उधर घुमाने के बाद ) मैं डिफ़ॉल्ट चैंजिस्ट से हटा नहीं सका , मैंने गलती से कई डॉक्स-निर्देशिकाओं को कैश कर दिया था।

मैंने पहली बार अपने द्वारा किए गए वास्तविक परिवर्तनों की सराहना की, फिर इसे हल करने के बारे में - मुझे बहुत लंबा समय लगा। मैंने कोशिश की, git rm -r --cached .लेकिन हमेशा path-specअलग-अलग रूपों के path-specसाथ-साथ -fऔर -rझंडे के साथ ERRORS मिलेगा ।

git statusअभी भी फ़ाइल नाम दिखाएगा, इसलिए मैंने उन कुछ क्रियाओं का उपयोग करने की कोशिश की git rm -cached, लेकिन कोई भाग्य नहीं। परिवर्तनों को तोड़ना और अस्थिर करना काम करने लगता था, लेकिन वे एक समय के बाद फिर से कतारबद्ध हो गए (मैं सटीक समय सीमा पर एक बैटी हाज़ी हूं)। मैंने आखिरकार इन प्रविष्टियों को अच्छे उपयोग के लिए हटा दिया है

git reset

मुझे लगता है कि यह केवल एक अच्छा विचार है जब आपके पास कोई परिवर्तन नहीं है / कैश्ड जो आप वास्तव में करना चाहते हैं।


0

सीधे शब्दों में कहें git rm -r --cached <folder_name/file_name>

कभी-कभी, आप फ़ाइलों की प्रतिबद्ध कमांड के बाद .gitignore फ़ाइल को अपडेट करते हैं। तो, फ़ाइलें स्मृति में कैश हो जाती हैं। कैश्ड फ़ाइलों को निकालने के लिए, उपरोक्त कमांड का उपयोग करें।


-2
  1. जोड़ दिया।

  2. Git स्टेटस // चेक फ़ाइल जिसे संशोधित किया जा रहा है

    // git रीसेट HEAD --- जिस फ़ाइल को आप अनदेखा करना चाहते हैं उसे बदल दें

  3. git रीसेट HEAD .idea / <- जो लोग कमिट करना चाहते थे। पहले से कमिट करें // git चेक स्टेटस और विचार फ़ाइल चली जाएगी, और आप जाने के लिए तैयार हैं!

  4. git कमिट -म ''

  5. जोर का धक्का


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