लाइन एंडिंग से निपटने के लिए मेरी प्रक्रिया निम्नानुसार है (कई रिपोज पर परीक्षण की गई लड़ाई):
एक नया रेपो बनाते समय:
- के
.gitattributesरूप में के रूप में अन्य विशिष्ट फ़ाइलों के साथ बहुत पहले प्रतिबद्ध में डाल दिया .gitignoreऔरREADME.md
मौजूदा रेपो से निपटने के दौरान:
.gitattributesतदनुसार बनाएँ / संशोधित करें
git commit -a -m "Modified gitattributes"
git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n"
-n( --no-verifyपूर्व प्रतिबद्ध हुक को छोड़ना है)
- मुझे अक्सर ऐसा करना पड़ता है कि मैंने इसे एक उपनाम के रूप में परिभाषित किया है
alias fixCRLF="..."
- पिछली कमांड को दोहराएं
- हाँ, यह वूडू है, लेकिन आम तौर पर मुझे कमांड को दो बार चलाना पड़ता है, पहली बार यह कुछ फाइलों को सामान्य करता है, दूसरी बार और भी फाइलें। आम तौर पर जब तक कोई नई प्रतिबद्धता नहीं बनती तब तक इसे दोहराना सबसे अच्छा होगा :)
- पुराने और सामान्यीकरण से ठीक पहले (नई शाखा) के बीच कुछ समय पीछे-पीछे जाएं। ब्रांच को स्विच करने के बाद, कभी-कभी git को और भी अधिक फाइल्स मिलेंगी जिन्हें रिन्युअल करने की आवश्यकता है!
में .gitattributesमैं सभी पाठ फ़ाइलों को स्पष्ट रूप से घोषित वामो EOL होने के रूप में आम तौर पर विंडोज टूलींग के बाद से, जबकि गैर- Windows टूलींग CRLF साथ संगत नहीं है वामो के साथ संगत है (यहां तक कि कई NodeJS कमान वामो लाइन उपकरण मान और इसलिए आपकी फ़ाइलों में EOL बदल सकते हैं)।
की सामग्री .gitattributes
.gitattributesआमतौर पर मेरी तरह दिखता है:
*.html eol=lf
*.js eol=lf
*.json eol=lf
*.less eol=lf
*.md eol=lf
*.svg eol=lf
*.xml eol=lf
यह पता लगाने के लिए कि वर्तमान रेपो में गिट द्वारा किस विशिष्ट एक्सटेंशन को ट्रैक किया जाता है, यहां देखें
सामान्यीकरण के बाद के मुद्दे
एक बार जब यह किया जाता है, तो एक और सामान्य चेतावनी है।
कहते हैं कि आपका masterपहले से ही अद्यतित और सामान्यीकृत है, और फिर आप चेकआउट करते हैं outdated-branch। अक्सर उस शाखा की जाँच के बाद ही सही, कई फाइलें संशोधित के रूप में चिह्नित करती हैं।
समाधान एक नकली प्रतिबद्ध ( git add -A . && git commit -m 'fake commit') और फिर करना है git rebase master। रिबास के बाद, नकली प्रतिबद्ध दूर जाना चाहिए।