प्रत्येक लाइन को संशोधित किए बिना कुछ लाइनों से कैरिज रिटर्न (^ M) को हटाना


2

मेरे पास कुछ काफी लंबी C ++ फाइलें हैं, और git diff --check रिपोर्ट है कि कुछ कैरिज रिटर्न हैं ^M लगभग 15 विभिन्न लाइनों पर। यह विंडोज 7 मशीन पर है। कई समाधानों के माध्यम से खोज करने के बाद, अर्थात् विज़ुअल स्टूडियो का Advanced Save Options, या नोटपैड ++ के ईओएल रूपांतरण, वे सभी हर लाइन को संशोधित करते प्रतीत होते हैं, न केवल उन लोगों के बारे में जो शिकायत कर रहे हैं। इसके परिणामस्वरूप प्रतिस्थापित की जाने वाली प्रत्येक रेखा का एक भिन्न रूप होता है।

ऐसा इसलिए हो सकता है क्योंकि इन फ़ाइलों में पिछले सभी परिवर्तनों में भी गाड़ी का रिटर्न था ^M और पिछले किसी भी गाड़ी वापसी चेतावनी को नजरअंदाज कर दिया है?

चल रहा है git config core.autocrlf सच लौटाता है, लेकिन जब मैं दौड़ता हूं तो फ़ाइल का मंचन कुछ नहीं करता है git diff --cached --check मंचन के बाद उस फ़ाइल के लिए।

क्या उन्हें हटाने का कोई तरीका है? मैन्युअल रूप से लाइन पर जाने और बदलने की कोशिश करने से मदद नहीं लगती है।

जवाबों:


0

15 लाइनें?

नोटपैड ++ में, प्रतिस्थापित चुनें। चांस बढ़ाया। \ R के लिए खोजें (जो कि ^ M है) और कुछ नहीं के साथ प्रतिस्थापित करें (जब तक कि आप एक नई पंक्ति नहीं चाहते हैं, तब \ n से बदलें) चूँकि आप सभी ^ M को प्रतिस्थापित नहीं करना चाहते हैं, सभी को प्रतिस्थापित न करें, उन लोगों को चुनें जिन्हें आप बदलना चाहते हैं।

यदि आप नियमित विंडो नोटपैड का उपयोग करते हैं, तो ^ M बॉक्स के रूप में दिखाई देगा। आप बक्से निकाल सकते हैं। बदसूरत, लेकिन यह काम करता है।


1

उपयोग dos2unix <file> अगर कमांड लाइन पर। यह लाइन एंडिंग की जरूरत को ठीक कर देगा या कुछ नहीं तो कुछ भी नहीं। ए करें find . -name "*.cpp" -exec dos2unix {} + कई फाइलें करने के लिए। फिर तुलना करें git diff करने से पहले।

फ़ाइलों में मिश्रित लाइन अंत के साथ समाप्त होने से बचना सबसे अच्छा है। यह विलय और निम्नलिखित इतिहास को अजीब बना सकता है।

कुछ संपादकों की शैली नहीं बदलेगी, लेकिन मुझे लगता है कि अगर एक ^ M भी फाइल में मिलता है, तो कुछ संपादक dos शैली को मान लेंगे और फ़ाइल लिखते समय सभी पंक्ति अंत को बदल देंगे।

आमतौर पर संपादकों के लिए सेटिंग्स ढूंढना संभव है जो संपादक को उस शैली के साथ चिपका देगा जो आप चाहते हैं। लाइन एंडिंग और टैब सेटिंग्स भी आमतौर पर शैली के आधार पर सेट की जाती हैं।


1

Git इसे स्वचालित रूप से कर सकता है git config --global core.autocrlf true लेकिन यह इसे चेकआउट समय या प्रतिबद्ध समय पर करता है। तो git मंचन किए गए परिवर्तनों को नहीं दिखाएगा, लेकिन यदि आपके संपादक ने कुछ नई अवांछित लाइन अंत का परिचय दिया है तो चुपचाप ध्यान रखना चाहिए।

मुझे लगता है कि dos2unix का उपयोग करें यदि अवांछित लाइन अंत पहले से ही भंडार में हैं।

विवरण के लिए, यहां देखें उत्तर: https://stackoverflow.com/questions/10418975/how-to-change-line-ending-settings और पढ़ो http://git-scm.com/book/en/Customizing-Git-Git-Configuration#Formatting-and-Whitespace


0

उदाहरण के लिए आप कर सकते हैं एक विंडोज़ मशीन पर:

for /r %f in (*.js) do "c:\Program Files\git\usr\bin\dos2unix.exe" %f

यह वर्तमान निर्देशिका से .js एक्सटेंशन के साथ सभी फाइलों से CRs को हटा देगा

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