2011-12-12 13 views
72

_Electronics नामक मेरे आंशिक की पहली प्रतिबद्धता में इसे पूंजी अक्षरों से शुरू किया गया था, फिर मैंने इसे _electronics में बदल दिया।क्या गिट केस संवेदनशील नहीं है?

साइगविन के तहत गिट ने नए नाम के बाद मामले को नजरअंदाज कर दिया, इसलिए मैंने लक्ष्य रेपो में हाथ से नाम बदल दिया।

अब यह कभी-कभी _electronics आंशिक _Electronics में बदलता है।

मैंने क्या गलत किया है?

+8

क्या ओएस आप पर कर रहे हैं? –

+9

आप किस फाइल सिस्टम का उपयोग कर रहे हैं? –

+0

साइगविन के साथ विंडोज़। मेरा सर्वर उबंटू लिनक्स चलाता है। फ़ाइल सिस्टम को नहीं जानते, मुझे लगता है कि ext3 या ext2 - मेरे प्रदाता ने न्यूनतम स्थापना कॉन्फ़िगर की है। – JAkk

उत्तर

64

इसे 2 अलग-अलग चीजों के रूप में देखा जाएगा लेकिन आपको गैर-केस-संवेदी प्रणाली पर समस्याएं पैदा होंगी। यदि ऐसा है, तो सुनिश्चित करें कि आप किसी भी पथ या फ़ाइल नाम टैब-टैब कर रहे हैं। इसके अलावा, अगर किसी चीज का नाम बदलने के लिए, ऐसा करते हैं:

mv file.txt temp.txt 
git add -A 
git commit -m "renaming..." 
mv temp.txt File.txt 
git add -A 
git commit --amend -m "Renamed file.txt to File.txt" 

इससे उन्हें करने से परिवर्तन करने के लिए, तो प्रतिबद्ध टूट का एक स्पष्ट तरीका है।

git mv file.txt temp.txt 
git mv temp.txt File.txt 
git commit -m "Renamed file.txt to File.txt" 

यह रूप में अच्छी तरह निर्देशिका नाम का समायोजन से संबंधित है: यह करने के लिए एक छोटा रास्ता सूचकांक और काम फ़ोल्डर सभी एक में हेरफेर करने के लिए है git mv and only change case of directory

+0

ऐसा लगता है कि यह सही था (सिवाय इसके कि मैं पूंजी अक्षरों से डाउनकेस में बदल रहा था) – JAkk

+0

क्या आपने विंडोज़ पर msysgit की कोशिश की है? –

+0

मैंने इसमें देखा, जब तक कि मैं साइगविन के लिए उपयोग करता हूं, यह साइगविन का उपयोग करने के लिए और अधिक आराम से है - संकेत – JAkk

87

यह core.ignorecase विन्यास मूल्य पर निर्भर करने के लिए जा रहा है , जो केस-संवेदी फाइल सिस्टम में गलत है और विंडोज़ पर msysgit में सच है।

core.ignorecase

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

डिफॉल्ट गलत है, गिट-क्लोन (1) या गिट-इनिट (1) को छोड़कर, रजिस्ट्रेटरी बनाया गया है, तो उचित होने पर core.ignorecase सत्य जांच और सेट करेगा।

+65

यह सही उत्तर इमो है। भविष्य के लिए, 'git config --unset-all core.ignorecase && git config - सिस्टम कोर का उपयोग करें।सूडो के साथ झूठी अनदेखा करें। – Znarkus

+0

@ ओन एक्स पर ज़ेनर्कस, आपका कोड बिल्कुल वही था जो मुझे चाहिए था। धन्यवाद! –

+1

जेम्स के लिए ditto, @Znarkus ने ओएस एक्स पर इस समस्या के लिए फिक्स की पहचान की है, धन्यवाद! –

21

यह काफी आसान है:

git mv Electronics electronics -f 
git commit -m "That was easy!" 
+1

क्या आपने इस मामले को असंवेदनशील फाइल सिस्टम पर आजमाया था? –

+2

@ एडवर्ड हां, ओएस एक्स – Arnoud

+1

मैंने शुरुआत में मूल पोस्टर के रूप में इसे एक फ़ोल्डर के केस-बदलते नाम बदलने की कोशिश कर रहा था, फ़ाइल नहीं। अब जब मैं इसे फिर से पढ़ता हूं, यह अस्पष्ट है। दरअसल, 'एमवी-एफ' फाइल के लिए काम करेगा। –

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