नजरअंदाज की गई फ़ाइलों को स्थिति से बाहर रखें


133

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

क्या इन फ़ाइलों को दिखाना सामान्य है?

मैंने एक जानकारी को अनदेखा कर दिया और एक .gitignoreफाइल को Git रिपॉजिटरी के रूट डायरेक्टरी में डाल दिया और उपयोग करते समय उन्हें जोड़ा नहीं गया, git add .लेकिन ऐसा लगता है कि उन्हें पूरी तरह से नजरअंदाज नहीं किया गया है, क्योंकि वे उपरोक्त सूची में दिखाई देते हैं और सूची में नहीं दिखते हैं द्वारा मुद्रित git ls-files --others -i --exclude-standard। केवल ~/.gitignoreवहां दिखाई देने वाले पैटर्न से मिलान की गई फाइलें ।

क्या ऐसा हो सकता है क्योंकि पहले के चरण में मैंने उनकी उपेक्षा नहीं की थी और वे कम से कम एक बार प्रतिबद्ध थे?

जवाबों:


231

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

git update-index --assume-unchanged <file>

या उन्हें रिपॉजिटरी से हटा दें

git rm --cached <file>

संपादित करें

यह लेख भी यही बताता है


4
अपडेट-इंडेक्स ने मेरे लिए काम किया। ऐसी समस्या जहाँ जीआईटी स्थिति को अनदेखा किया जा रहा है ... बहुत कष्टप्रद है। +1
अबे पेट्रिलो

3
मुझे अभी भी यह समस्या है। उपरोक्त आदेशों में से किसी ने भी मेरे लिए काम नहीं किया। दोनों मामलों में git का कहना है कि उसे विचाराधीन फाइलों का कोई ज्ञान नहीं है लेकिन वे अभी भी git स्टेटस में दिखाई देते हैं :(
Cfreak

5
@Cfreak क्या git status -- <file>आपकी फ़ाइल के लिए "परिवर्तन के लिए प्रतिबद्ध नहीं" या "अनट्रैक की गई फ़ाइलें" दिखाता है? पूर्व यदि आपके पास पहले से ही सूचकांक में फ़ाइल है और मुझे आपकी समस्या को हल करने के लिए और अधिक जानकारी की आवश्यकता होगी (बेहतर तरीके से अलग-अलग प्रश्न दिखाए गए संदेशों के साथ और बस टिप्पणी में इसे लिंक करें)। बाद में उन फाइलों के लिए है जिन्हें गिट (अभी तक) द्वारा ट्रैक नहीं किया गया है, लेकिन .gitignoreफाइल में नहीं हैं और स्वतंत्र रूप से सूचकांक में जोड़ा जा सकता है।
एमबीओ 12

1
@MBO - हाँ यह करता है। धन्यवाद! आपकी टिप्पणी से मुझे यह उत्तर खोजने में मदद मिली: stackoverflow.com/questions/594757/… जिसने मेरे लिए काम किया।
Cfreak

1
पहला विकल्प आकर्षण की तरह काम करता है। मैं पहले से ही दूसरे की कोशिश की, और यह फ़ाइलों को "हटा दिया" के रूप में मंचन करने का कारण बना और मैं निश्चित रूप से ऐसा नहीं चाहता था।
कैरम

16

मेरे पास यह मुद्दा भी आया है, यह संभवत: इसलिए है क्योंकि आपने अपनी कमिटेड डायरेक्ट्री / फाइलों को .ITignore में जोड़ दिया था, क्योंकि उन्हें आरंभिक कमिट प्रवाह में GIT द्वारा "ट्रैक किया जाना" कहा गया था।

इसलिए आपको जीआईटी ट्रैकिंग कैश को साफ करने की आवश्यकता है:

git rm --cached -r [folder/file name]

अधिक विस्तृत विवरण यहां पढ़ा जा सकता है: http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

उपरोक्त कमांड ने आपके दूरस्थ जीआईटी मूल से फ़ोल्डर / फ़ाइलों के अवशेषों को भी हटा दिया। तो आपका GIT रिपोज साफ हो जाता है।


11

समस्या यह हो सकती है कि यह फ़ाइल अभी भी गिट कैश में है। इस समस्या को हल करने के लिए git cache को रीसेट करना होगा।

Git कैश रीसेट करें। यह सब कुछ सूचकांक से हटा देता है।

git rm -r --cached . 

सभी फाइलें फिर से जोड़ें:

git add . 

प्रतिबद्ध:

git commit -m ".gitignore was fixed." 


1

मुझे लगता है कि आप tmp निर्देशिका (विजुअल स्टूडियो प्लेटफ़ॉर्म) नहीं जोड़ना चाहते हैं

1- अपनी स्थानीय .gitignore फ़ाइल के नीचे की पंक्तियाँ जोड़ें

## ignore tmp
/tmp/
./tmp/

3- बैकअप और स्थानीय रूप से tmp फ़ोल्डर को हटा दें। (बैकअप कहीं और। उदा। डेस्कटॉप?)

4- रिमोट से सिंक की तुलना में स्थानीय के लिए प्रतिबद्ध परिवर्तन (जैसे। जीथब)।

इन चरणों के बाद आपके tmp निर्देशिका को फिर से अपलोड नहीं किया जाएगा।


0

से आदमी Git-lsfiles :

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

व्यक्तिगत रूप से मैं अपने स्रोत के पेड़ में doxygen फाइलें रखने के लिए जाता हूं, इसलिए मैंने इसे केवल अपने .gitignore (जो मेरे स्रोत पेड़ की सबसे ऊपरी निर्देशिका में है) में जोड़ा है:

docs/*

उम्मीद है की वो मदद करदे।


0

निम्न चरण केवल अनटैक की गई फ़ाइलों के लिए काम करते हैं । यह जानकारी निम्नलिखित कॉन्फ़िगरेशन के लिए लागू होती है:

Platform: linux

Git version: git version 1.8.3.1

निम्नलिखित स्थान पर मौजूद "बहिष्कृत" फ़ाइल में अनदेखी की जाने वाली फ़ाइलों की सूची डालें।

<path till .git directory>/.git/info/exclude

"बहिष्कृत" फ़ाइल की प्रारंभिक सामग्री

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

"बहिष्कृत" फ़ाइल की अंतिम सामग्री

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch

0

स्वीकृत उत्तर के अनुसार, आप फ़ाइल को अपरिवर्तित मान सकते हैं , ताकि आप अपने स्थानीय मशीन पर जो कुछ भी करते हैं, वह आपकी दूरस्थ शाखा से शुरू न हो।

कुछ ऐसा git update-index --assume-unchanged src/main/resources/config.properties जहां src / main.resources / config.properties आपके प्रोजेक्ट के भीतर उस फ़ाइल को खोजने के लिए पथ का एक नमूना है।

अब, यदि आप फ़ाइल को अपनी रिपॉजिटरी से पूरी तरह से हटाना चाहते हैं, तो आप remove cachedइसके बजाय `git rm - कैशेड’ का उपयोग करना चाह सकते हैं।

यह परिदृश्य निम्न स्थिति पर लागू हो सकता है:

मान लीजिए कि मेरे पास एक फ़ाइल है जहां मैं पासवर्ड संग्रहीत करता हूं। मैंने शुरू में उस फ़ाइल को गलत विवरण के साथ शुरू किया है, बस मेरे सहयोगियों के पास उनकी मशीनों पर वही फ़ाइल है। हालाँकि, अब मैंने अपने स्थानीय मशीन पर अपना सही विवरण जोड़ दिया है। अब मैं उस फ़ाइल को गलती से सही पासवर्ड विवरण के साथ फिर से होने से कैसे रोक सकता हूं?


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