2012-05-13 14 views
40

मैं विंडोज का उपयोग कर रहा हूं। फ़ाइलों को व्यवस्थित करते समय मुझे यह त्रुटि मिलती है।'गिट इंडेक्स को अपडेट करना विफल क्यों है' प्रदर्शित

Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.

फ़ाइलों की एक सूची है जो वामो से

CRLF के लिए Git उपयोग पार मंच के साथ CRLF/वामो मुद्दे पर पढ़ने का एक बहुत कुछ करने के बाद बदल दिया गया है के बाद, मैं और अधिक या कम समझते हैं क्या चल रहा है, और मैं यह निर्धारित करने की कोशिश कर रहा हूं कि कौन सा ऑटोक्राफ सेटिंग मेरे लिए सबसे अच्छी है, लेकिन मुझे समझ में नहीं आता कि गिट कहता है कि इंडेक्स को अपडेट करना असफल रहा। मेरी समझ यह है कि उसने ईओएफ को बदल दिया है, तो इसमें समस्या क्या है और यह मुझे क्यों बता रहा है कि इंडेक्स को अपडेट करना विफल रहा है। क्या मुझे कुछ ठीक करने की आवश्यकता है (उपयुक्त ऑटोक्राल्फ़ सेटिंग चुनने के अलावा) या क्या मैं बस

पर क्लिक कर सकता हूं, उसके बाद मेरे पास दो विकल्प जारी हैं और इंडेक्स अनलॉक करें, इसका क्या अर्थ है और कार्रवाई का सबसे अच्छा तरीका क्या है।

+0

[एलएफ का संभावित डुप्लिकेट ग्रिट में सीआरएलएफ द्वारा प्रतिस्थापित किया जाएगा - वह क्या है और क्या यह महत्वपूर्ण है?] (Https://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf- इन-गिट-व्हाट-इट-एंड-इट-इट-महत्वपूर्ण) –

उत्तर

40
git config --global core.autocrlf false 

हमेशा मेरी सिफारिश रही है (देखें "Git 1.6.4 beta on Windows (msysgit) - Unix or DOS line termination")।

हालांकि, अपने मामले में, आप "जारी रखें" सकते हैं, लेकिन यह चेतावनी है उल्लेख करने के लिए कुछ फ़ाइलों के रूपांतरण को वापस नहीं लाया जा सकता है:

core.safecrlf 

अगर सही है तो Git जांच करता है, तो परिवर्तित अंत में लाइन रूपांतरण सक्रिय होने पर सीआरएलएफ उलटा होता है। गिट सत्यापित करेगा कि कोई आदेश कार्य पेड़ में सीधे या अप्रत्यक्ष रूप से फ़ाइल को संशोधित करता है या नहीं। उदाहरण के लिए, एक ही फ़ाइल को जांचकर फ़ाइल को करने से मूल फ़ाइल को कार्य पेड़ में मिलना चाहिए। यदि यह core.autocrlf की वर्तमान सेटिंग का मामला नहीं है, तो गिट फ़ाइल को अस्वीकार कर देगा।
चर को "चेतावनी" पर सेट किया जा सकता है, इस मामले में गिट केवल एक अपरिवर्तनीय रूपांतरण के बारे में चेतावनी देगा लेकिन ऑपरेशन जारी रखेगा।

आप इस चेतावनी को देखने के लिए, के रूप में this thread में विस्तार से बताया नहीं करना चाहते हैं, तो आप false को core.safecrlf सेट कर सकते हैं।

आप गिट गुई के टूल मेनू के माध्यम से अपनी फ़ाइलों को भी छीन सकते हैं, और उदाहरण के लिए, git config file के साथ उन उपकरणों में कुछ विकल्प जोड़ सकते हैं।
ब्याज कि, प्रत्येक उपकरण के लिए, आप जोड़ सकते हैं: के बाद उपकरण निष्पादन खत्म

guitool.<name>.norescan 

परिवर्तन के लिए काम निर्देशिका पुन: स्कैन न करें।


आप अनलॉक सूचकांक पर थोड़ा विस्तार से बता कृपया सकते हैं

आप index.tcl git-gui script में उस संदेश देख सकते हैं: यह index.lock फ़ाइल को हटा जब जोड़ तोड़ Git-जीयूआई बनाता है सूचकांक।
आप "lockfile API" documentation page में और अधिक देख सकते हैं:

म्युचुअल बहिष्कार
जब हम एक नई अनुक्रमणिका फ़ाइल लिखते हैं, तो पहले हम एक नई फ़ाइल $GIT_DIR/index.lock बनाते हैं, इसमें नई सामग्री लिखें, और इसे अंतिम गंतव्य $GIT_DIR/index पर पुनर्नामित करें।
हम $GIT_DIR/index.lock फ़ाइल O_EXCL के साथ बनाने का प्रयास करते हैं ताकि हम नोटिस कर सकें और विफल हो जाएं जब कोई और पहले से ही इंडेक्स फ़ाइल को अपडेट करने का प्रयास कर रहा है।

+1

आपके व्यापक उत्तर के लिए धन्यवाद, लेकिन आप दो बार चेतावनी का जिक्र करते हैं, लेकिन यह मेरी समस्या है, यह इंगित नहीं करता कि यह एक चेतावनी है लेकिन एक त्रुटि है। 'गिट इंडेक्स को अपडेट करना विफल रहा' ... या क्या मैं इसे गलत व्याख्या कर रहा हूं? – byronyasgur

+0

@byronyasgur उत्तर में उल्लेख किया गया धागा इस संदेश को "चेतावनी" के रूप में संदर्भित करता है, मुझे लगता है क्योंकि यह पूरी तरह से गिट कमांड * असफल * विफल नहीं होता है। यह केवल आपको चुनौती देता है, आपको एक विकल्प के लिए पूछता है (जब तक कि आप "' nrescan' "या' core.safecrlf' को 'false'' निर्दिष्ट नहीं करते हैं) – VonC

+0

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

1

मैं भी भी मेरी core.autocrlf सेटिंग यद्यपि इस में भाग false और core.safecrlf सेट नहीं होने पर पहले से ही है। मुझे संदेह है कि अपराधी कॉन्फ़िगरेशन सेटिंग diff.astextplain.textconv है।

जब मैं git config --list भाग गया, निम्न पंक्ति उत्पादन में दिखाया गया था:

diff.astextplain.textconv=astextplain 

मुझे नहीं लगता कि इस सेटिंग को वास्तव में चेतावनी/त्रुटि से संबंधित है, लेकिन यह मेरे पाठ रूपांतरण पर गौर करने के लिए प्रेरित कि हो सकता है।

[। .gitattributes मैं शायद मिल गया GitHub से फ़ाइल]
* text=auto 

देखते हुए: एक छोटे से spelunking ऑनलाइन और मेरे रेपो में के बाद, मैं निम्न पंक्ति मेरी रेपो के .gitattributes में फ़ाइल की खोज की कि उपर्युक्त पंक्ति में केवल इस पर टिप्पणी नहीं की गई थी, और आगे 'ऑटोमैटिक' लाइन-एंडिंग रूपांतरणों से निपटने के लिए हमेशा सिरदर्द रहा, मैंने उस फ़ाइल को मेरे रेपो से निकालने का विकल्प चुना। ऐसा करने के बाद, एक ही फाइलों को व्यवस्थित करने से मुझे "गिट इंडेक्स अपडेट करना विफल" चेतावनी/त्रुटि के साथ संकेत नहीं दिया गया।

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