2009-03-17 20 views
152

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

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

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

क्या गिट इसे किसी भी तरह से अनदेखा करने का कोई तरीका है?

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

+0

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

उत्तर

231

जांच git-update-index man page और --समम-अपरिवर्तित बी यह और संबंधित है।

जब मैं अपने समस्या है मैं इस

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

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

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

यह संशोधित फ़ाइलों के लिए बहुत अच्छा काम करता है। हालांकि जब मैं डीआईआर को हटाता हूं (या तो 'आरएम' या 'गिट आरएम' के साथ) फाइलों को 'गिट स्टेटस' में गायब/हटाए जाने के रूप में सूचीबद्ध किया जाता है। मुझे लगता है कि मैं इसे एक उत्तर के रूप में स्वीकार करूंगा और हटाए गए फ़ाइलों के बारे में स्पष्ट रूप से पूछे जाने वाले प्रश्न को पुन: स्थापित कर दूंगा। (सबसे पहले, मुझे नहीं पता था कि इतना बड़ा अंतर था;) धन्यवाद! –

+3

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

+4

ज़िट्राक्स, हां, http://stackoverflow.com/questions/2363197/ –

6

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

+0

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

+1

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

+0

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

4

क्या मैं आमतौर पर करते हैं

git छिपाने की जगह

Git जो कुछ-कुछ और

git छिपाने की जगह लागू

Git गुप्त कोष में स्पष्ट

+9

fwiw आप उन अंतिम दो को एक बार में करने के लिए 'गिट स्टैश पॉप' भी कर सकते हैं (हालांकि 'गिट स्टैश साफ़' सभी स्टैश प्रविष्टियों को साफ़ कर देगा, यदि आप चाहते हैं)। – Groxx

36

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

सिर्फ उन्हें के रूप में रेपो सूचकांक में असंशोधित अंकन के बजाय http://schacon.github.com/git/git-update-index.html

पर आदमी पेज और http://fallengamer.livejournal.com/93321.html

+8

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

+0

+1 sleske, क्योंकि उस आदेश ने मुझे फाइल को गलती से "छोड़ा" के बाद बचाया! –

3

उपयोग पर एक तुलना के लिए इस कोड

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

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

संबंधित मुद्दे