the - windows essentials 2018




'अपडेटिंग द गेट इंडेक्स फेल' क्यों प्रदर्शित किया गया है (2)

मैं विंडोज का इस्तेमाल कर रहा हूं। फ़ाइलों का मंचन करते समय मुझे यह त्रुटि मिलती है।

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

इसके बाद फ़ाइलों की एक सूची है जो LF से CRLF में बदल दी गई है

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

फिर मेरे पास दो विकल्प हैं Continue और Unlock Index, ये क्या मतलब है और कार्रवाई का सबसे अच्छा कोर्स क्या है।


मैं इसमें भाग भी गया था यहाँ तक कि मेरे core.autocrlf सेटिंग पहले से ही false और core.safecrlf है। मुझे लगता है कि अपराधी की सेटिंग अलग है diff.astextplain.textconv

जब मैंने git config --list चलाया, तो आउटपुट में निम्न पंक्ति दिखाई गई:

diff.astextplain.textconv=astextplain

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

* text=auto

[मुझे संभवतः GitHub से .gitattributes फ़ाइल मिली है।]

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


TL; DR: इस चेतावनी का अर्थ यह है कि git आपको UNIX- शैली में पाठ फ़ाइल में जाँच के बावजूद विंडोज-शैली में एक पाठ फ़ाइल लौटा सकता है।

UNIX और Windows पाठ फ़ाइलों में लाइन ब्रेक को बचाने के तरीके में भिन्न होते हैं। विकिपीडिया में विभिन्न OS पर लाइन ब्रेक की सूची है

यदि आपको Windows पर निम्न कार्य करने की चेतावनी मिलती है, तो आप प्रतिलिपि प्रस्तुत करने योग्य होते हैं:

  • खाली निर्देशिका में एक गिट रिपॉजिटरी बनाएँ
  • रेपो के प्रारंभिक, खाली स्थिति का प्रतिनिधित्व करने के लिए एक प्रतिबद्ध बनाएँ:

    git commit --allow-empty -m "initial commit"
    
  • git config core.autocrlf और git config core.safecrlf का उपयोग यह सत्यापित करने के लिए करें कि autocrlf सही पर सेट true और safecrlf unset (कोई आउटपुट नहीं) है। यदि यह मामला नहीं है, तो उन्हें सेट करने के लिए निम्न आदेशों का उपयोग करें

    git config core.autocrlf true
    git config --unset core.safecrlf
    
  • UNIX प्रारूप में text.txt नामक एक पाठ फ़ाइल लिखने के लिए नोटपैड ++ का उपयोग करें। एक फ़ाइल लिखें जिसमें कम से कम एक लाइन ब्रेक हो। यह है कि आप UNIX लाइन अंत का चयन कैसे करते हैं:

  • git add text.txt । आपको चेतावनी संदेश मिलता है

    चेतावनी: LF को text.txt में CRLF द्वारा प्रतिस्थापित किया जाएगा।
    फ़ाइल की अपनी कार्यशील निर्देशिका में इसकी मूल पंक्ति अंत होगी।

  • पाठ फ़ाइल के लिए प्रतिबद्ध: `git कमिट-मी" UNIX समाप्ति के साथ फ़ाइल जोड़ें "

  • अब देखें कि फ़ाइल कैसी दिखती है यदि आप इसे ट्री से चेक करते हैं। फ़ाइल बनाने से पहले संस्करण की जाँच करें (1 कमिट बैक करें)। फ़ाइल text.txt कार्यशील निर्देशिका से गायब हो जाती है:

    git checkout ~1
    
  • फ़ाइल बनाने के बाद अब संस्करण को पुनर्स्थापित करें

    git checkout master
    

फ़ाइल text.txt बहाल है। लेकिन इसे नोटपैड ++ में खोलें और नोटपैड ++ के निचले स्टेटस लाइन में लाइन एंडिंग फॉर्मेट की जांच करें:

आपके द्वारा चेक की गई फ़ाइल में विंडोज-स्टाइल लाइन एंडिंग्स हैं, फिर भी आपके द्वारा शुरू की गई फ़ाइल में UNIX- शैली फ़ाइल एंडिंग्स हैं! यह चेतावनी संदेश के बारे में है: सेटिंग्स core.autocrlf=true साथ में core.safecrlf=<unset> अर्थ है कि आप जिन फ़ाइलों को पेड़ से पुनर्स्थापित करते हैं, वे आपके द्वारा जाँच की गई फ़ाइलों से भिन्न हो सकती हैं, क्योंकि वे भिन्न हो सकती हैं। फ़ाइल अंत।







core.autocrlf