मैं git में एक फ़ाइल का नाम कैसे बदलूं जो केवल मामले से अलग है?


14

मेरे git (Xcode) प्रोजेक्ट में, मैंने अनुचित मामले के साथ एक फ़ाइल नाम दिया। अब मैं इसका नाम बदलने की कोशिश करने गया था, लेकिन जब मैं प्रतिबद्ध होता हूं, मुझे मिलता है:

घातक: फ़ाइल उपनाम 'MyProject / MyFile.h' नहीं जोड़ेगा ('MyProject / MyFilE.h' पहले से ही सूचकांक में मौजूद है)

मुझे यकीन है कि यह इसलिए है क्योंकि git का उपयोग केस-संरक्षण, केस-असंवेदनशील फाइल सिस्टम जैसे HFS + पर चलने के लिए नहीं किया जाता है। लेकिन मैं इसके आसपास कैसे पहुंचूं?

मैंने दोनों फ़ाइलों का नाम बदलकर कुछ और करने की कोशिश की, और फिर वही किया, और फिर उनका नाम बदलकर जो मैं चाहता हूं, लेकिन यह अभी भी विफल है (उसी त्रुटि संदेश के साथ)।

जवाबों:


21

के रूप में पूछा और पर जवाब stackoverflow , वहाँ यह है कि एक डिस्क छवि फ़ाइल में एक नई फाइल सिस्टम बनाने को शामिल नहीं करता करने के लिए एक आसान तरीका बताया गया है:

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

उदाहरण:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

लिंक रॉट से बचने के हितों में, हम आमतौर पर आपसे पूछते हैं कि उत्तर के प्रासंगिक भागों को लिंक के उत्तर के शरीर के पीछे कॉपी करें।
इयान सी

धन्यवाद @ ian-c मैं उम्मीद कर रहा था कि स्टेक्सएक्सचेंज परिवार के अंदर लिंक पर यह नियम लागू नहीं होता है।
mspasov

1
हाँ, मुझे वही मिल रहा है जो आप कह रहे हैं लेकिन स्थिरता अच्छी है।
इयान सी

अजीब। मैं सकारात्मक था मैंने यह कोशिश की, लेकिन आज यह काम करता है। धन्यवाद।
केन

2

मुझे अभी तक केस असंवेदनशील फाइल सिस्टम पर सीधे इसे ठीक करने का कोई तरीका नहीं मिला है, आपको केस सेंसिटिव फाइल सिस्टम चाहिए।

सौभाग्य से मैक ओएस एक्स में अच्छी वर्चुअल डिस्क माउंटिंग सपोर्ट है, जिससे आप अपने कंप्यूटर पर जल्दी (आसानी से) अस्थायी (केस) संवेदनशील फाइल सिस्टम प्राप्त कर सकते हैं।

डिस्क उपयोगिता खोलें, एक नई छवि बनाएं और "मैक ओएस एक्सटेंडेड" के केस-सेंसिटिव संस्करणों में से एक को "फॉर्मेट" फील्ड सेट करें। यह भी सुनिश्चित करें कि आप इसे अपने भंडार के लिए पर्याप्त रूप से बड़ा बना लें।

अपनी नई डिस्क को माउंट करें, उस पर गिट रिपॉजिटरी देखें, सुनिश्चित करें कि सही नाम वाली फ़ाइल में सही सामग्री है, और दूसरे को हटा दें। अपने परिवर्तनों को कमिट करें और पुश करें, और फिर आप डिस्क छवि को अनमाउंट कर सकते हैं और इसे हटा सकते हैं।

यदि आपके पास क्लोन करने के लिए रिमोट सर्वर नहीं है (यानी आप अपनी हार्ड ड्राइव पर स्थानीय रूप से गिट रेपो चला रहे हैं), तो याद रखें कि आप अपनी हार्ड ड्राइव पर सीधे अन्य गिट रिपॉजिटरी से क्लोन कर सकते हैं।


1
यह भयानक श्रम गहन है। आप डिस्क छवि फ़ाइल में एक नई फ़ाइल प्रणाली को स्पिन किए बिना कर सकते हैं।
इयान सी

1

चरण 1 : बस एक नाम के साथ फ़ाइल का नाम बदलें जो अधिक भिन्न है (केवल पत्रों के मामले से।) बस वर्तमान नाम से अलग एक यादृच्छिक नाम चुनें और उस नाम से जिसे आप देना चाहते हैं।

चरण 2 : प्रतिबद्ध जीयूआई (Xcode) द्वारा इस फाइल या CLI द्वारा (टर्मिनल)

चरण 3 : फ़ाइल का नाम बदलें जैसा कि आप पहले स्थान पर नाम बदलना चाहते थे। तो अब, पिछले नाम के साथ केवल मामले की तुलना में अधिक अंतर होगा।

चरण 4 : प्रतिबद्ध नाम बदलकर फिर से फाइल।

कोई जादू की चाल की जरूरत है। और आप GUI या CLI द्वारा कमिट करना चुन सकते हैं।


0

मैं सॉर्सेट्री का उपयोग करता हूं। सीएलआई का उपयोग किए बिना ऐसा करने के लिए आसान कदम है। फ़ाइल को दूसरे नाम पर बदलें (उदाहरण के लिए Index.php से Index_old.php) फिर कमिट करें और पुश करें .. फिर से नाम को वांछित नाम (index.php) में बदलें और फिर सबमिट करें।

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