Git में केस संवेदनशीलता


84

मैं git के साथ एक समस्या में चला गया हूँ। मूल रूप से मैं झूठ core.ignorecaseबोलता हूं क्योंकि मैं कुछ फ़ोल्डरों के नाम के मामले को बदलना चाहता था (क्योंकि मैं एक केस-असंवेदनशील फाइल सिस्टम के साथ ओएसएक्स के अधीन हूं, परिवर्तन अन्यथा नहीं दिखाए गए थे)। जब मैंने अपना डेटा खींचा, तो मैंने देखा कि अब हर बदला हुआ फ़ोल्डर पुराने और नए दोनों नाम के साथ रिपॉजिटरी पर दो बार दिखाई देता है। मुझे नहीं पता कि पुराने फ़ोल्डरों को हटाने के लिए क्या करना है क्योंकि वे स्थानीय रूप से प्रकट नहीं होते हैं (मैं core.ignorecaseफिर से सच करने की कोशिश कर रहा हूं लेकिन यह मदद नहीं कर रहा है)।


1
हो सकता है कि आप किसी छवि पर एक एक्सट्रीम 3 फाइलसिस्टम बना सकें, इसे माउंट कर सकें और इस केस-सेंसिटिव फाइलसिस्टम में खींच सकें।
एंड्रे प्यूएल

@ AndréPuel अच्छी तरह से, वास्तव में मैं कुछ 'आसान' के लिए देख रहा था। : पी, लेकिन सलाह के लिए धन्यवाद, मैं इसके लिए जाऊंगा अगर मुझे अन्य समाधान नहीं मिलते हैं।
एंट्रोपिड

जवाबों:


126

एक msysgit में इस टिप्पणी के समान वर्कअराउंड हो सकता है (एक और मामले के लिए-असंवेदनशील ओएस: विंडोज) मदद कर सकता है?

मैंने इसी मुद्दे का सामना किया है। ग्रहण में एक पैकेज के नाम को फिर से दिखाया और पिछले निर्माण पर स्विच करने के कारण फ़ोल्डर का नाम नहीं बदला। मैं विंडोज 7, जीआईटी 1.7.0.2.msysgit.0 का उपयोग कर रहा हूं

मेरे फ़ोल्डर का नाम बदलकर विंडोज में " folder" कर दिया गया था, लेकिन FolderGit में " " के रूप में प्रदर्शित किया गया था ।
मैंने इसे FolderWindows में " " और फिर "रनिंग" नाम देकर समस्या को ठीक किया :

git mv "Folder" "Folder2"
git mv "Folder2" "folder"

ध्यान दें कि जीआईटी 2.0.1 (जून 2014) के बाद से, git mv Folder folderबस काम करना चाहिए!

देखें " गिट: फ़ाइलनामों के बदलते पूंजीकरण "


1
मैंने देखा कि इस तरह से नाम बदलने पर, दूसरा नाम एक लूओओंग समय ले सकता है । इसका उत्तर धैर्य रखना है; फ़ोल्डर अंततः नाम बदल जाएगा, फिर आप इसे कर सकते हैं।
नाथनअल्डनसेर

उसी को प्राप्त करने का एक और तरीका "फोल्डर" का नाम बदलकर "फोल्डर 2" करना है और एक कमिट करना है और फिर "फोल्डर 2" को "फोल्डर" और अंतिम कमेंट में संशोधन करना है।
दानीसी

@ डानीसीई मैंने केवल उत्तर संपादित किया है: जीआईटी 2.0.1 के साथ यह बहुत सरल होना चाहिए।
वॉन

22

MacOS पर निम्न कमांड का उपयोग करें। यह फ़ाइल नाम पर संवेदनशील होने के लिए आपके गिट कॉन्फ़िगरेशन को बदल देगा।

git config core.ignorecase false

आप इसे इस प्रकार संपादित करके ~/.gitconfigऔर सेट करके विश्व स्तर पर स्थापित कर सकते हैं core:

[core]
    ignoreCase = false

मैंने ठीक इसके विपरीत किया था ताकि गिट को एक रिबेस बनाने में सफल हो सके जिसमें एक केस का नाम शामिल था। धन्यवाद!
सोरिन

21

आप एक केस-संवेदी फ़ाइल सिस्टम के साथ एक डिस्क छवि (अधिमानतः एक स्पार्सबंडल डिस्क छवि) बना सकते हैं और वहां अपनी गिट रिपॉजिटरी चेकआउट कर सकते हैं।

नीचे दी गई डिस्क उपयोगिता स्क्रीनशॉट दिखाता है कि केस-संवेदी डिस्क छवि कैसे बनाई जाए।

डिस्क उपयोगिता सेटिंग्स


एक बहुत बेहतर, स्थायी, इस समस्या का समाधान और केस संवेदनशीलता के परिणामस्वरूप अन्य रहस्य। मैंने डिस्क छवि बनाई; इसमें मेरे पुराने Git repos की नकल की; एक प्रतीकात्मक लिंक बनाया जहाँ से मैं अपने सभी git repos को नए, विरल बंडल संस्करण में रखता था। सामान्य वर्कफ़्लो पर वापस फिर से यह मुठभेड़ करने के लिए कभी नहीं।
jwd630

इस तरह से बनाई गई डिस्क बहुत धीमी है।
मिनकी पैन

1
@MinqiPan, मुझे एक ही चिंता थी, लेकिन ऐसा नहीं होना चाहिए अगर आप APFS वॉल्यूम बनाते हैं। APFS वॉल्यूम समान "कंटेनर" विभाजन में मौजूद हो सकते हैं , इस प्रकार कोई प्रदर्शन जुर्माना नहीं हो सकता है।
विक्टर सर्जिएंको

12

डिफ़ॉल्ट रूप से मैक ओएस एक्स "केस असंवेदनशील लेकिन मामला संरक्षण" है। यह एक महत्वपूर्ण अंतर है।

मेरा सुझाव है कि आप एक और डिस्क छवि बनाएं, और विशेष रूप से इसे "एचएफएस केस सेंसिटिव" के रूप में प्रारूपित करें।


टिप के लिए धन्यवाद, लेकिन इससे ऊपर की पोस्ट ने सब कुछ हल कर दिया!
एंट्रोपिड

7
दुर्भाग्य से बहुत सारे खराब सॉफ्टवेयर (Adobe, बेशक) डिफ़ॉल्ट टूटे हुए OSX फाइल सिस्टम पर निर्भर करते हैं। सावधान रहने की जरूरत।
जिम स्टीवर्ट


1

बग शीर्षक वाले git@vger.kernel.org चर्चा मंच पर केस सेंसिटिविटी के मुद्दों पर हाल ही में एक थ्रेड है ? Git चेकआउट एक गलत त्रुटि संदेश के साथ विफल हो जाता है जो विभिन्न प्लेटफार्मों के बीच मामले की संवेदनशीलता के मुद्दों, और चीजों को उजागर करने की कोशिश करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.