गिट में संशोधित (लेकिन प्रतिबद्ध नहीं) फ़ाइलों को अनदेखा करें?


181

क्या मैं उन फ़ाइलों को अनदेखा करने के लिए जीआईटी को बता सकता हूं जो संशोधित (हटाए गए) हैं, लेकिन प्रतिबद्ध नहीं होना चाहिए?

स्थिति यह है कि मेरे पास रेपो में एक उपनिर्देशिका है जिसमें वह सामान है जिसकी मुझे बिल्कुल भी दिलचस्पी नहीं है, इसलिए मैंने इसे ऑटो-कम्प्लीशन और जैसे (आईडीई में) दिखाने से रोकने के लिए डिलीट कर दिया।

लेकिन अब, अगर मैं उस फ़ोल्डर को .gitignore में जोड़ता हूं, तो बस कुछ भी नहीं बदलता है, सभी सामान को git स्थिति द्वारा हटाए गए के रूप में दिखाया गया है।

वहाँ एक तरह से इसे या तो नजरअंदाज करने का एक तरीका है?

(वैकल्पिक रूप से, जैसा कि मैं git-svn का उपयोग कर रहा हूं, क्या मैं स्थानीय git में परिवर्तन कर सकता हूं और यह सुनिश्चित कर सकता हूं कि वे svn repo पर पारित नहीं हुए हैं?)


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

जवाबों:


274

बाहर की जाँच Git अद्यतन सूचकांक आदमी पेज और --assume-अपरिवर्तित बिट और संबंधित।

जब मुझे आपकी समस्या है तो मैं ऐसा करता हूं

git update-index --assume-unchanged dir-im-removing/

या एक विशिष्ट फ़ाइल

git update-index --assume-unchanged config/database.yml

3
क्या आप अपनी सभी उपेक्षित फाइलों को किसी तरह सूचीबद्ध कर सकते हैं?
Zitrax

21
आप फ़ाइलों को वापस पा सकते हैंgit update-index --no-assume-unchanged config/database.yml
डेनिस नियाज़ेव

1
कुछ कमियों के बिना एक नए समाधान के लिए डेव एल का जवाब नीचे देखें --assume-unchanged
बेन चैलेंजर

2
क्या हर बार इस कमांड को मैन्युअल रूप से चलाने के बजाय इसे रिपॉजिटरी कॉन्फिगर फाइल में जोड़ना संभव है?
टिम बोलांड

1
क्या यह अगले कमिट के लिए संशोधित होगा? मैं नहीं चाहता कि इसे हमेशा के लिए अपरिवर्तित मान लिया जाए।
प्रणव नंदन २ '’१

41

एक नया और बेहतर विकल्प वह है git update-index --skip-worktreeजो एक हार्ड रीसेट या एक पुल से एक नया परिवर्तन नहीं खोएगा।

मैन पेज http://schacon.github.com/git/git-update-index.html पर देखें

और http://fallengamer.livejournal.com/93321.html पर एक तुलना


9
नोट करने के लिए एक नुकसान यह है कि एक बार एक फ़ाइल के संशोधनों के साथ छिपा हुआ है skip-worktree, इन फ़ाइलों को ढूंढना थोड़ा बोझिल है। एकमात्र तरीका मुझे पता है git ls-files -v |grep -v '^H'। इसके अलावा, कई GUI उपकरण इस सुविधा के बारे में नहीं जानते हैं, और यदि checkout"छिपी" संशोधित फ़ाइलों के कारण विफल रहता है, तो मजेदार त्रुटियां उत्पन्न कर सकते हैं ।
तिल्ली

मैं git doc फ़ाइलों में से किसी को भी समझने में सक्षम नहीं हूं। तो यह ज्यादा मदद नहीं है। (प्रत्येक डॉक फ़ाइल यह मानती है कि आप हर दूसरी डॉक फ़ाइल की सूक्ष्मताओं को समझते हैं!)
स्कॉट बिग्स

7

इस कोड का उपयोग करें

git update-index --assume-unchanged file-name

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

6

ट्रैक की गई फ़ाइलों को अनदेखा नहीं किया जा सकता है, इसलिए आपको उन्हें पहले अपने सूचकांक से निकालना होगा। वह जोड़ें .gitignoreजो उन निर्देशिकाओं को अनदेखा करता है जिन्हें आप नहीं चाहते हैं, फिर उन्हें हटा दें, और किसी भी स्ट्रैगलर को हटा दें git rm --cached


1
हम्म, मैं यह कोशिश करता हूं, लेकिन फिर मेरे पास हटाए गए के रूप में सूचीबद्ध सभी फाइलें हैं। क्या मुझे ऐसा करना चाहिए और - कैशेड का कारण होगा कि इसे हटाने के लिए धक्का नहीं दिया जाएगा? या मुझे sth मिला। गलत? मेरे लिए सबसे महत्वपूर्ण रिमोट (svn) रेपो को दूषित नहीं कर रहा है।

1
आप ऐसा कुछ भी नहीं कर सकते जो आपके सूचकांक में शुरू न हो। git rm - वह सब कुछ जो आप कमिट नहीं करना चाहते हैं, तो स्थानीय रूप से "।" में एक .gitignore फ़ाइल जोड़ें। अब, चाहे आप कितना भी जोड़ लें, आप उन फ़ाइलों को अपने सूचकांक में फिर कभी नहीं देख पाएंगे।
जॉन फेमिनाला

आह, मुझे लगता है कि मैं समझता हूं - अब कैच किया हुआ है। यह केवल इंडेक्स से सामान निकालता है, और अकेले काम करने वाले पेड़ को छोड़ देता है .. मुझे यकीन नहीं है कि मुझे कुछ याद आ रहा है, लेकिन AFAIS मैं इसके विपरीत देख रहा हूं , सूचकांक को छूने के बिना काम के पेड़ से इसे हटा रहा है .. या क्या मैं किसी तरह इसके लिए उपयोग कर सकता हूं?

6

जो मैं आमतौर पर करता हूं

जीआईटी की मार

और जो कुछ भी मिल जाए

गिट स्टैश लागू होते हैं

गिट स्टैश क्लियर


10
fwiw आप एक बार में उन दो को करने के लिए 'git stash pop' भी कर सकते हैं (हालाँकि 'git stash clear' यदि आप चाहें तो सभी stash प्रविष्टियाँ क्लियर कर देंगे)।
ग्रोक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.